반응형
문제
이미 정렬이 완료되어 있는 두배열 arr1, arr2을 받아 병합정렬하는 Solution()함수를 구현하세요.
제약조건
arr1과 arr2는 각각 길이가 1 이상 100, 000 이하 입니다.
• arr1과ar r2는 각각오름차순으로 정렬되어있습니다.
입출력 예
arr1 | arr2 | result |
[1,2,3] | [4,5,6] | [1,2,3,4,5,6] |
[1,3,5] | [2,4,6] | [1,2,3,4,5,6] |
풀이 및 코드
병합정렬이므로, 이미 정렬 된 arr1과 arr2를 index0부터 값을 비교하여 채워넣으면 된다.
import java.io.*; import java.util.*; public class Main { private static long bfs(int n, int target){ if(n == target) return 1; Queue<long[]> queue = new LinkedList<>(); queue.add(new long[]{n, 1L}); long result = -1; long[] info; while(!queue.isEmpty()){ info = queue.poll(); // 다음 연산 결과가 target과 같으면 연산 값 return if(info[0] * 2 == target || info[0]*10+1 == target) return info[1]+1; // 연산 결과가 target보다 작을 때만 다음 연산 추가 if(info[0] * 2 < target) queue.add(new long[]{info[0]*2, info[1]+1}); if(info[0] * 10 + 1 < target) queue.add(new long[]{info[0]*10+1, info[1]+1}); } return result; } public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); br.close(); System.out.print(bfs(input[0], input[1])); } }
728x90
반응형
'코딩 테스트 정복기 > 기타' 카테고리의 다른 글
[코딩테스트 합격자 되기(Java)] 문제 69. 조약돌 문제★ ★ ★ (0) | 2025.01.05 |
---|---|
[코딩테스트 합격자 되기(Java)] 문제 68. LIS길이계산하기★ ★ ★ (0) | 2025.01.03 |
[코딩테스트 합격자 되기(Java)] 문제 50. 계수정렬 구현하기★ (0) | 2024.12.09 |
[코딩테스트 합격자 되기(Java)] 문제 44.스도쿠 퍼즐★★★ (0) | 2024.11.28 |
[코딩테스트 합격자 되기(Java)] 문제 43.1부터 N까지 숫자 중 합이 10이 되는 조합 구하기★ (0) | 2024.11.27 |