본문 바로가기

프로그래머스(Java)

(192)
[프로그래머스] 숨어있는 숫자의 덧셈 (2) 코드 힌트문자열을 순회하며 숫자 찾기:주어진 문자열을 하나씩 문자 단위로 검사합니다. 이때, 숫자인 경우와 문자(알파벳)인 경우를 구분해야 합니다.숫자 연속성 처리:연속된 숫자를 모아야 합니다. 문자열을 순회하면서 숫자를 발견하면, 이를 모아서 문자열로 저장합니다. 만약 문자가 나오면, 현재까지 모은 숫자를 정수로 변환하여 결과에 더하고, 저장된 숫자를 비워야 합니다.문자 후 처리:문자열 끝에 도달했을 때, 마지막으로 모아 놓은 숫자가 있으면 이를 정수로 변환하여 결과에 추가합니다. 이렇게 해야 모든 숫자를 처리할 수 있습니다.숫자 처리 및 초기화:숫자를 모을 때는 StringBuilder를 사용하여 숫자를 문자열로 쌓습니다. 문자를 만나면, 그동안 모은 숫자를 정수로 변환하고 결과에 더한 후, Stri..
[프로그래머스] 팩토리얼 코드 힌트팩토리얼 개념 이해하기:팩토리얼은 n!로 표현되며, n부터 1까지의 모든 정수를 곱한 값을 의미합니다. 예를 들어, 5!는 5 × 4 × 3 × 2 × 1입니다. 이 문제에서는 주어진 숫자 n 이하의 가장 큰 팩토리얼 값을 찾아야 합니다.팩토리얼 값 계산하기:팩토리얼을 계산할 때, 초기값을 설정합니다. 팩토리얼 값을 계속 곱해가면서 현재 계산된 팩토리얼 값을 저장합니다.계산 반복하기:n이 현재 계산된 팩토리얼 값보다 클 동안 반복합니다. 매 반복마다 팩토리얼의 계수를 증가시키고, 현재 계산된 팩토리얼 값에 계수를 곱하여 업데이트합니다.결과 확인하기:반복이 끝난 후, n과 현재 계산된 팩토리얼 값이 같은지 확인합니다. 만약 같다면 현재 계수가 정답입니다.만약 n이 현재 계산된 팩토리얼 값보다 작다..
[프로그래머스] 모스부호 (1) 코드 힌트문제 이해:입력으로 Morse 코드로 인코딩된 문자열이 주어집니다. 이를 알파벳으로 변환해야 합니다. Morse 코드는 공백으로 구분된 문자열로 제공되며, 각 Morse 코드가 대응하는 알파벳으로 변환되어야 합니다.HashMap 사용:다른 자료구조를 사용할 수도 있지만, HashMap을 연습하기에 좋은 문제입니다. HashMap은 데이터를 키-값 쌍으로 저장할 수 있는 데이터 구조입니다. 이 문제에서는 Morse 코드 문자열을 키로, 대응하는 알파벳을 값으로 저장하면 변환 작업을 빠르게 수행할 수 있습니다.HashMap을 사용하면 Morse 코드에서 알파벳을 찾는 과정이 빠르고 효율적이므로, HashMap 사용을 강력히 추천합니다.HashMap에 저장할 Morse 코드 배열:String[] mo..
[프로그래머스] 진료순서 정하기 코드 힌트문제 이해:주어진 emergency 배열에서 각 요소의 우선순위를 순위로 변환합니다.예를 들어, 가장 큰 값은 1등, 두 번째로 큰 값은 2등 등으로 정리합니다.복사 및 정렬:emergency 배열을 복사하여 새로운 배열을 만들고 정렬합니다.정렬된 배열을 사용하면 각 요소의 순위를 쉽게 파악할 수 있습니다.요소 위치 찾기:원본 emergency 배열과 결과 배열의 요소 위치는 동일합니다.정렬된 배열을 활용하여 각 요소의 우선순위를 파악하고, 원본 배열의 각 요소에 맞는 순위를 결과 배열에 저장합니다.이를 위해 요소의 인덱스를 찾는 방법으로 indexOf()를 사용할 수 있습니다.순위 매기기:정렬된 배열을 큰 값부터 순차적으로 탐색하며 각 값에 순위를 매깁니다.이 순위를 원본 배열에서의 위치에 맞..
[프로그래머스] 전국 대회 선발 고사 코드 힌트순위별 최저 랭킹 찾기:1등부터 3등까지 각 순위에 해당하는 참가자를 찾기 위해 랭킹 배열과 참석 여부 배열을 사용합니다. 각 순위에서 참가할 수 있는 최저 랭킹을 찾는 과정이 필요합니다.최저 랭킹 찾기:각 순위에 대해 현재까지 찾은 최저 랭킹보다 더 낮은 랭킹을 가진 참가자를 찾습니다. 이를 위해 attendance 배열에서 참가 중인 인덱스를 검사하고, rank 배열에서 최저 랭킹을 업데이트합니다.결과 계산:각 순위에 따라 인덱스를 사용하여 결과를 계산합니다. 1등은 10000배수, 2등은 100배수, 3등은 1배수로 계산됩니다. 찾은 인덱스에 따라 결과를 누적합니다.참가 상태 업데이트:현재 순위의 참가자를 찾은 후, 그 참가자의 상태를 false로 변경하여 다음 순위를 찾을 때 제외됩니다...
[프로그래머스] 그림 확대 코드 힌트배열 크기 설정:결과를 담을 배열을 생성합니다. 배열의 크기는 입력된 문자열 배열의 길이에 k를 곱한 값입니다. 이는 각 문자열이 k배로 커지기 때문입니다.문자열 반복 처리:각 문자열의 각 문자를 k번 반복하여 새로운 문자열을 생성합니다. String.valueOf(s.charAt(j)).repeat(k)를 사용하여 문자열을 반복합니다.문자열의 행 반복 추가:각 문자열 행을 k번 반복하여 결과 배열에 추가합니다. 이 과정에서 StringBuilder를 사용하여 반복된 문자열을 효율적으로 생성하고, result 배열에 저장합니다.결과 배열에 저장:반복된 각 문자열을 결과 배열에 추가하고, 인덱스를 업데이트하여 올바른 위치에 저장합니다.정답은 더보기 클릭더보기class Solution { pu..
[프로그래머스] 정수를 나선형으로 배치하기 코드 힌트방향 배열 설정:상, 좌, 하, 우 방향을 배열 dx와 dy를 사용하여 정의합니다. 각각의 방향은 (x, y) 좌표에서의 이동을 나타냅니다. 예를 들어, (1, 0)은 오른쪽으로 이동하는 것을 의미합니다.결과 배열 초기화:int[][] result = new int[n][n];를 사용하여 n x n 크기의 배열을 생성합니다. 이 배열은 숫자를 채우기 위한 결과 배열입니다. 배열의 기본값은 0입니다.변수 초기화:숫자 num을 1로 초기화하고, 현재 위치를 (0, 0)으로 설정합니다. direction 변수를 0으로 초기화하여 오른쪽 방향으로 시작합니다.숫자 채우기:현재 위치가 배열의 유효한 위치이고, 그 위치에 숫자가 아직 채워져 있지 않으면, 현재 위치에 숫자를 채우고 숫자를 증가시킵니다.방향 ..
[프로그래머스] 정사각형으로 만들기 코드 힌트최대 크기 계산하기:주어진 2차원 배열 arr의 행과 열 중 더 큰 값을 n으로 설정합니다. 이는 결과 배열의 크기를 결정하기 위함입니다.새로운 배열 초기화:int[][] result = new int[n][n];를 사용하여 n x n 크기의 새로운 2차원 배열을 생성합니다. 이 배열의 기본값은 자동으로 0으로 초기화됩니다. 배열이 생성되면 모든 요소는 기본값인 0으로 채워집니다.배열 복사하기:기존 배열의 원소를 새 배열에 복사합니다. 이때 주어진 배열의 크기와 새로운 배열의 크기 차이를 고려하여, 주어진 배열의 범위 내에서만 원소를 복사합니다.결과 배열 반환하기:모든 복사 작업이 끝나면 새로운 배열을 반환합니다. 새 배열은 주어진 배열의 원소를 포함하며, 나머지 부분은 기본값인 0으로 채워져 ..