TIL)프로그래밍 기초_23.06.09(알고리즘_배열뒤집기)

주민·2023년 6월 9일
0

TIL

목록 보기
15/84

프로그래머스의 배열 뒤집기 문제

문제

정수가 들어 있는 배열 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++;
}

0개의 댓글

관련 채용 정보