
자연수가 들어있는 리스트가 주어질 때, 다음 규칙에 따라 새로운 리스트를 만들려고 합니다.
자연수가 들어있는 리스트 arr가 매개변수로 주어질 때, 위 과정을 수행해서 만든 새로운 리스트를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
자연수가 들어있는 리스트 arr가 solution 함수의 매개변수로 주어집니다.
문제에 주어진 과정을 수행해서 만든 새로운 리스트를 return 해주세요.
| arr | return |
|---|---|
| [1, 2, 3, 4, 5, 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] |
def solution(arr):
left, right = 0, len(arr) - 1
idx = 0
answer = [0 for _ in range(len(arr))]
while left <= right:
if left % 2 == 0:
answer[idx] = arr[left]
left += 1
else:
answer[idx] = arr[right]
right -= 1
idx += 1
return answer
#아래는 테스트케이스 출력을 해보기 위한 코드입니다. 아래 코드는 잘못된 부분이 없으니, solution 함수만 수정하세요.
arr = [1, 2, 3, 4, 5, 6]
ret = solution(arr)
#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은 ", ret, " 입니다.")
이번엔
빈칸 채우기,함수 작성문제가 아니라 코드 오류를 찾는 문제이다.
주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하는 문제이다.
def solution(arr):
left, right = 0, len(arr) - 1
idx = 0
answer = [0 for _ in range(len(arr))]
while left <= right:
if idx % 2 == 0: # 수정
answer[idx] = arr[left]
left += 1
else:
answer[idx] = arr[right]
right -= 1
idx += 1
return answer
#아래는 테스트케이스 출력을 해보기 위한 코드입니다. 아래 코드는 잘못된 부분이 없으니, solution 함수만 수정하세요.
arr = [1, 2, 3, 4, 5, 6]
ret = solution(arr)
#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은 ", ret, " 입니다.")

원본 리스트의 앞쪽 항목들을 answer 리스트의 짝수 인덱스 항목으로, 원본 리스트의 뒤쪽 항목들은 answer 리스트의 홀수 인덱스 항목으로 저장한다.
이전의 코드는 left의 값이 짝수 이면 원본 리스트의 앞쪽 항목을 추가하고 홀수 이면 원본 리스트의 뒤쪽 항목으로 추가한 코드였다. → 이를 수정하기 위해 left 변수를 idx 변수로 고쳐 원본 리스트를 읽는 인덱스 값이 짝수인지 홀수인지 파악할 수 있는 코드로 변경하였다.