본문 바로가기
Python/알고리즘

[COS PRO 1급 #2-8] 거스름돈 구하기

by 포푸리 (POPOOLY) 2023. 2. 20.
반응형

문제설명

자연수가 들어있는 리스트가 주어질 때, 다음 규칙에 따라 새로운 리스트를 만들려고 합니다.

* 주어진 리스트의 첫 번째 원소를 새로운 리스트의 첫 번째 원소에 넣습니다.
* 주어진 리스트의 마지막 원소를 새로운 리스트의 두 번째 원소에 넣습니다.
* 계속해서 주어진 리스트의 남아있는 원소중 가장 앞에있는 원소와 가장 뒤에있는 원소를 번갈아 가져와 새로운 리스트에 순서대로 넣습니다.
* 주어진 리스트에 더이상 원소가 남아있지 않을 때까지 위 과정을 반복합니다.

자연수가 들어있는 리스트 arr가 매개변수로 주어질 때, 위 과정을 수행해서 만든 새로운 리스트를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

매개변수 설명

자연수가 들어있는 리스트 arr가 solution 함수의 매개변수로 주어집니다.
* arr의 길이는 1 이상 1,000 이하입니다.
* arr의 원소는 1 이상 10,000 이하의 자연수입니다.

return 값 설명

문제에 주어진 과정을 수행해서 만든 새로운 리스트를 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

풀이

def solution(arr):
    left, right = 0, len(arr) - 1
    idx = 0
    answer = [0 for _ in range(len(arr))]
    # 0부터 순서를 셀 경우 짝수번째 순서에는 왼쪽, 홀수번재 순서에는 오른쪽 원소를 새 리스트에 넣음
    while left <= right:
        if idx % 2 == 0:
            answer[idx] = arr[left]
            left += 1
        else:
            answer[idx] = arr[right]
            right -= 1
        idx += 1
    return answer

댓글