728x90
반응형
안녕하세요.
이번 포스팅은 Cos Pro 1급 java 2차 기출 8번 문제인 규칙에 맞는 배열 구하기 입니다.
□ 문제설명
자연수가 들어있는 배열이 주어질 때, 다음 규칙에 따라 새로운 배열을 만들려고 합니다.
- 주어진 배열의 첫 번째 원소를 새로운 배열의 첫 번째 원소에 넣습니다.
- 주어진 배열의 마지막 원소를 새로운 배열의 두 번째 원소에 넣습니다.
- 계속해서 주어진 배열의 남아있는 원소중 가장 앞에있는 원소와 가장 뒤에있는 원소를 번갈아 가져와 새로운 배열에 순서대로 넣습니다.
- 주어진 배열에 더이상 원소가 남아있지 않을 때까지 위 과정을 반복합니다.
자연수가 들어있는 배열 arr와 arr의 길이 arr_len이 매개변수로 주어질 때, 위 과정을 수행해서 만든 새로운 배열을 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
□ 매개변수 설명
자연수가 들어있는 배열 arr와 arr의 길이 arr_len이 solution 함수의 매개변수로 주어집니다.
- arr_len은 1 이상 1,000 이하의 자연수입니다.
- arr의 원소는 1 이상 10,000 이하의 자연수입니다.
□ return 값 설명
문제에 주어진 과정을 수행해서 만든 새로운 배열을 return 해주세요.
□ 예시
arr | arr_len | return |
[1, 2, 3, 4, 5, 6] | 6 | [1, 6, 2, 5, 3, 4] |
□ 예시설명
처음에 주어진 배열은 [1, 2, 3, 4, 5, 6]입니다. 주어진 규칙에 맞게 새로운 배열을 만드는 과정은 다음과 같습니다.
처음 배열 arr | 새로운 배열 |
[1, 2, 3, 4, 5, 6] | [] |
[2, 3, 4, 5, 6] | [1] |
[2, 3, 4, 5] | [1, 6] |
[3, 4, 5] | [1, 6, 2] |
[3, 4] | [1, 6, 2, 5] |
[4] | [1, 6, 2, 5, 3] |
[] | [1, 6, 2, 5, 3, 4] |
※ 문제 접근 방식
(1) if문 한줄만 바꾸면 됩니다.
왼쪽 인덱스를 배열 길이/2 한 값을 빼서 절대값을 취하고
오른쪽 인덱스를 배열 길이/2 한 값을 빼서 절대값을 구합니다
두 값을 대소비교하여 왼쪽 값이 더 크면 왼쪽 인덱스를 늘려주고
오른쪽 값이 더 크면 오른쪽 인덱스를 감소시켜줍니다.
package getArrayInLaw;
import java.util.Arrays;
public class GetArrayInLaw {
public static void main(String[] args) {
Main sol = new Main();
int[] arr = { 1, 2, 3, 4, 5, 6 };
int[] ret = sol.solution(arr);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
System.out.println("solution 메소드의 반환 값은 " + Arrays.toString(ret) + " 입니다.");
}
}
class Main {
public int[] solution(int[] arr) {
int left = 0, right = arr.length - 1;
int idx = 0;
int[] answer = new int[arr.length];
while (left <= right) {
if (Math.abs(left - arr.length / 2) > Math.abs(right - arr.length / 2)) {
answer[idx] = arr[left];
left += 1;
} else {
answer[idx] = arr[right];
right -= 1;
}
idx += 1;
}
return answer;
}
}
728x90
반응형
'코딩테스트 > Cos Pro 1급 Java' 카테고리의 다른 글
[Cos Pro 1급 java] [3차] 문제4) 중복 문자열 이어붙이기 (0) | 2021.03.17 |
---|---|
[Cos Pro 1급 java] [3차] 문제3) 비숍으로부터 도망쳐 (0) | 2021.03.17 |
[Cos Pro 1급 java] [2차] 문제7) 거스름돈 구하기 - 탐욕법 문제(그리디 알고리즘) (0) | 2021.03.16 |
[Cos Pro 1급 Java] [2차] 문제6) 로봇을 움직여주세요 (0) | 2021.03.16 |
[Cos Pro 1급 java] [2차] 문제5) 언제까지 오르막길이야..?! (0) | 2021.03.16 |
댓글