정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
입출력 예
num_list가 [1, 2, 3, 4, 5]이므로 순서를 거꾸로 뒤집은 배열 [5, 4, 3, 2, 1]을 return합니다.
num_list를 반복문을 통해 반대로 출력하고 그 값을 answer 배열에 0부터 저장하는 방법으로 진행하려했으나 계속 오류가 나서 num_list.length - i 으로 제출하였다.
문제는 풀었는데 첫번째 방법이 왜 안되는지 이해가 안가서 다른 사람의 풀이와 블로그를 보면서 틀린 사유를 찾아봤다.
1안 => 오류
int num = 0;
for(int i = num_list.length; i == 0; i--){
answer[num] = num_list[i-1];
num++;
}
2안
for(int i = 0; i< num_list.length; i++){
answer[i] = num_list[num_list.length -1 -i];
}
오류 & 해결
1. for(nt i = num_list.length; i == 0; i--)
가운데 조건식이 참일 경우에만 for문이 진행되므로 0일때 종료가 아니라 0이상에서 0이 될 때까지로 하는 게 맞다 (>= 0)으로 수정
2. int i가 5라고 가정할 때 num_list[i-1] = [4]를 기본으로 두고 반복할 때마다 1씩 감소하도록 했는데 계속 오류가 나왔다.
오류의 원인은 int i = num_list.length; i >= 0 으로 돌리면서 5->4->3->2->1->0 이 되기 때문에 총 6번을 반복하게 된다. num_list의 갯수에 무조건 +1이 되서 입력을 하니 오류가 나는 것이었다.
위 내용을 참고하여 2가지 방법으로 수정했다.
1안 : num_list.length - 1을 하고 num_list[i] 로 수정
for(int i = num_list.length -1; i>=0; i--){
answer[num] = num_list[i];
num++;
}
2안 : int i의 값은 그대로 두고 조건문을 i>0 으로 수정
for(int i = num_list.length ; i>0; i--){
answer[num] = num_list[(i-1)];
num++;
}