[프로그래머스] 문자열 내마음대로 정렬하기
·
여러가지/알고리즘 & 자료구조
문자열 내 마음대로 정렬하기 (Java)문제 설명주어진 문자열 리스트 strings와 정수 n을 기준으로 각 문자열의 n번째 인덱스에 위치한 문자를 기준으로 오름차순 정렬하는 문제입니다. 만약 n번째 문자가 동일한 문자열이 여럿 있을 경우, 그 문자열들은 사전순으로 정렬합니다.문제 조건strings는 길이 1 이상, 50 이하의 배열입니다.strings의 각 원소는 소문자 알파벳으로 이루어져 있습니다.strings의 각 문자열은 길이 1 이상, 100 이하입니다.모든 strings의 원소의 길이는 n보다 큽니다.입출력 예시예시 1입력: strings = ["sun", "bed", "car"], n = 1출력: ["car", "bed", "sun"]설명: 각 문자열의 1번째 인덱스 문자를 기준으로 보면 "..
[프로그래머스] 푸드 파이트 대회
·
여러가지/알고리즘 & 자료구조
푸드 파이트 대회 문제 해결하기문제 설명푸드 파이트 대회는 수웅이가 매달 열리는 음식 먹기 대회입니다. 선수들은 1대 1로 대결하며, 각 대결마다 주어지는 음식의 종류와 양이 다릅니다. 선수들은 주어진 음식을 일렬로 배치한 후, 한 선수는 가장 왼쪽에서부터, 다른 선수는 가장 오른쪽에서부터 음식을 먹습니다. 중앙에는 물이 있으며, 물을 먼저 마시는 선수가 승리합니다.이 대회의 공정성을 위해, 두 선수는 음식의 종류와 양이 동일해야 하며, 음식을 먹는 순서도 같아야 합니다. 따라서 수웅이는 음식을 적절하게 준비해야 합니다. 여기서, 수웅이가 준비한 음식의 양을 기반으로 대회에 적합한 음식을 배치하는 방법을 찾는 것이 문제의 핵심입니다.예시예를 들어, 3가지 음식을 준비했다고 가정해 봅시다:1번 음식: 3개..
[프로그래머스] k번째수
·
여러가지/알고리즘 & 자료구조
K번째 수 찾기 알고리즘문제 설명배열의 특정 구간을 자르고, 그 구간을 정렬한 후, 정렬된 배열의 K번째 숫자를 찾는 문제입니다. 이를 통해 주어진 조건에 맞는 수를 구하는 과정을 연습할 수 있습니다. 예를 들어, 주어진 배열이 [1, 5, 2, 6, 3, 7, 4]이고, 명령어가 [[2, 5, 3], [4, 4, 1], [1, 7, 3]]인 경우를 살펴보겠습니다.첫 번째 명령어: [2, 5, 3] 배열의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.이 배열을 정렬하면 [2, 3, 5, 6]이 됩니다.3번째 숫자는 5입니다.두 번째 명령어: [4, 4, 1]배열의 4번째부터 4번째까지 자르면 [6]입니다.정렬 후 1번째 숫자는 6입니다.세 번째 명령어: [1, 7, 3]배열의 1번째부터 7번..
[프로그래머스] 가장 가까운 같은 글자
·
여러가지/알고리즘 & 자료구조
가장 가까운 같은 글자 문제 풀이문제 설명문자열 s가 주어졌을 때, 각 위치마다 자신보다 앞에 나온 동일한 글자가 있는지 확인하고, 가장 가까운 동일한 글자의 거리를 계산하는 문제입니다. 만약 같은 글자가 없으면 -1로 표시하고, 가장 가까운 동일한 글자가 있으면 그 거리를 반환합니다.예시예를 들어, 문자열 s = "banana"가 주어졌을 때, 각 문자는 다음과 같이 처리됩니다:b: 처음 등장했으므로 -1.a: 처음 등장했으므로 -1.n: 처음 등장했으므로 -1.a: 앞에서 두 번째 인덱스에 같은 글자 'a'가 있으므로 2.n: 앞에서 두 번째 인덱스에 같은 글자 'n'이 있으므로 2.a: 앞에서 두 번째, 네 번째 인덱스에 'a'가 있지만, 가까운 곳은 두 번째 앞이므로 2.결과는 [-1, -1, -..
[프로그래머스] 시저암호
·
여러가지/알고리즘 & 자료구조
시저 암호: 파이썬과 자바로 구현해보는 간단한 암호화 방식시저 암호는 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식입니다. 예를 들어, "AB"는 1만큼 밀면 "BC"가 되고, "z"는 1만큼 밀면 "a"로 변환됩니다. 시저 암호는 알파벳이 순환하는 구조이기 때문에 "Z"를 넘어서면 다시 "A"로 돌아옵니다.이 글에서는 파이썬(Python)과 자바(Java) 두 가지 언어로 시저 암호를 구현하고, 각각의 코드와 시간, 공간 복잡도를 분석해 보겠습니다.문제 정의주어진 문자열 s에서 각 알파벳을 n만큼 밀어서 암호화된 문자열을 반환하는 함수를 작성합니다.제한 사항공백은 밀어도 그대로 유지됩니다.문자열 s는 알파벳 대소문자와 공백으로만 이루어져 있습니다.s의 길이는 최대 8000 이하..
[프로그래머스] 가운데 글자 가져오기
·
카테고리 없음
문제 설명단어 s의 가운데 글자를 반환하는 함수 solution을 만들어야 합니다. 단어의 길이가 짝수라면 가운데 두 글자를 반환하면 됩니다.제한 사항s는 길이가 1 이상, 100 이하인 문자열입니다.입출력 예sreturn"abcde""c""qwer""we"솔루션 1: substring 메소드 사용첫 번째 접근 방식은 Java의 substring 메소드를 활용합니다.public class Solution { public String solution(String s) { int length = s.length(); int middle = length / 2; if (length % 2 == 0) { // 짝수 길이일 경우 가운데 두 글자 반환 ..
[프로그래머스] 핸드폰 번호 가리기
·
여러가지/알고리즘 & 자료구조
문제 설명프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.제한 조건phone_number는 길이 4 이상, 20이하인 문자열입니다.입출력 예phone_number return"01033334444" "***4444""027778888" "*****8888"public class Solution { public String solution(String phone_number) { // phone_number 배열의 길이를 구한다. String[] strAr..
[프로그래머스] 제일 작은 수 제거하기
·
카테고리 없음
제일 작은 수 제거하기문제 설명정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.제한 조건arr은 길이 1 이상인 배열입니다.인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.입출력 예[4,3,2,1][4,3,2][10][-1]문제 이해입력: 정수 배열 arr출력: arr에서 가장 작은 수를 제거한 새로운 배열예외: 배열이 비어있을 경우 [-1]을 반환조건: 배열의 모든 원소는 서로 다름풀이 방법최솟값 찾기: 배열을 순회하며 가장 작은 값을 ..