문제 지문 #4
오름차순으로 정렬되어있는 두 배열 arrA, arrB를 하나의 배열로 합치려 합니다. 단, 합친 후의 배열도 오름차순으로 정렬되어 있어야 합니다.
예를 들어 arrA = [-2, 3, 5, 9], arrB = [0, 1, 5]인 경우 두 배열을 오름차순으로 정렬된 하나의 배열로 합치면 [-2, 0, 1, 3, 5, 5, 9]가 됩니다.
오름차순으로 정렬된 두 배열 arrA와 arrB가 주어졌을 때, 두 배열을 오름차순으로 정렬된 하나의 배열로 합쳐서 return 하도록 solution 메서드를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
오름차순으로 정렬된 두 배열 arrA와 arrB가 solution 메소드의 매개변수로 주어집니다.
- arrA의 길이는 1 이상 200,000 이하입니다.
- arrA의 원소는 -1,000,000 이상 1,000,000 이하의 정수입니다.
- arrB의 길이는 1 이상 200,000 이하입니다.
- arrB의 원소는 -1,000,000 이상 1,000,000 이하의 정수입니다.
return 값 설명
두 배열 arrA, arrB를 오름차순으로 정렬된 하나의 배열로 합쳐서 return 해주세요.
예시
arrA | arrB | return |
[-2, 3, 5, 9] | [0, 1, 5] | [-2, 0, 1, 3, 5, 5, 9] |
혼자 풀이
앞서 1,2,3번 문제는 solution 메서드를 전체 작성하는 문제였는데, 4번 문제는 빈칸을 채우는 문제입니다.
알고 보니, 10문제 중 1,2,3번과 같은 메서드 전체를 작성하는 문제가 3개 한 줄 작성하는 문제가 3개 4번처럼 빈칸 채우는 문제가 4개가 있다고 하네요. 그나마 다행입니다. 코딩이 문제가 아니라 알고리즘을 짜지 못해서 문제였는데,
다 그정도는 아니었네요.
빈칸 채우기인 4번 문제는 메서드 전체 작성하는 것보다는 상대적으로 쉽습니다만.. 저는 약간 헤매서 그래도 10분 이상은 걸렸습니다.
이 문제는 어느 하나의 배열이 마지막 값에 도달하기 전까지 루프를 돌면서 두 배열의 index를 증가시키면서 값을 비교하고, 작은 값을 answer 배열에 입력합니다.
루프가 끝난 후에는 배열의 마지막 값에 도달하지 않은 배열의 나머지 값을 추가로 answer에 입력합니다.
/************************************************
1차 4번 배열합쳐서 오름차순 정렬하기
************************************************/
class MySolution {
public int[] solution(int[] arrA, int[] arrB) {
int arrA_idx = 0, arrB_idx = 0;
int arrA_len = arrA.length;
int arrB_len = arrB.length;
int answer[] = new int[arrA_len + arrB_len];
int answer_idx = 0;
while(arrA_idx<arrA_len && arrB_idx<arrB_len){
if(arrA[arrA_idx] < arrB[arrB_idx])
answer[answer_idx++] = arrA[arrA_idx++];
else
answer[answer_idx++] = arrB[arrB_idx++];
}
while(arrA_idx<arrA_len)
answer[answer_idx++] = arrA[arrA_idx++];
while(arrB_idx<arrB_len)
answer[answer_idx++] = arrB[arrB_idx++];
return answer;
}
// The following is main method to output testcase.
public static void main(String[] args) {
MySolution sol = new MySolution();
int[] arrA = {-2, 3, 5, 9};
int[] arrB = {0, 1, 5};
int[] ret = sol.solution(arrA, arrB);
// Press Run button to receive output.
System.out.println("Solution: return value of the method is " + Arrays.toString(ret) + " .");
}
}
아무래도 빈칸 채우기이다 보니, 정답이 혼자 푼 것과 동일합니다.
첨부 파일
프로젝트 파일 전체를 첨부합니다.
Solution 이 문제, CorrectSolution 이 정답, MySolution이 제가 푼 것입니다.
"Project from existing sources..." 메뉴에서 불러다 쓰시면 됩니다.
'Programming > Cos Pro 1급' 카테고리의 다른 글
Cos Pro 1급 - 샘플 문제 풀이 1차 6번 (1) | 2022.10.07 |
---|---|
Cos Pro 1급 - 샘플 문제 풀이 1차 5번 (배열의 원소의 갯수 세기) (0) | 2022.10.06 |
Cos Pro 1급 - 샘플 문제 풀이 1차 3번 (Ascii 코드 활용) (0) | 2022.10.05 |
Cos Pro 1급 - 샘플 문제 풀이 1차 2번 ( inRange() 함수 만들기) (0) | 2022.10.03 |
Cos Pro 1급 - 샘플 문제 로드하는 방법 (0) | 2022.10.03 |
댓글