Skip to content

문제 8 · 배열을 뒤집은 새 배열 반환

문제 8 [3점]

아래 문제를 풀기 위한 코드 혹은 의사알고리즘pseudo-algorithm을 작성하세요.

임의의 배열(list)을 입력으로 받아 원 배열은 유지하며 원 배열의 요소(element)의 순서를 거꾸로 한 새로운 배열을 반환하는 함수

풀이 및 해설

핵심은 원 배열을 건드리지 않는 것입니다. 따라서 원 배열과 같은 크기의 새 배열을 따로 만들고, 원 배열을 뒤에서부터 읽어 새 배열의 앞부터 채웁니다.

의사알고리즘

함수 reverse(list, n):
    새 배열 result[n] 생성
    for i in 0 .. n-1:
        result[i] ← list[n-1-i]   // 원 배열은 읽기만 함
    return result

인덱스 대응은 다음과 같습니다.

result[i]=list[n1i](0in1)

원 배열 list는 오직 읽기만 하고 수정하지 않으므로 그대로 보존됩니다. C++에서는 값 복사가 일어나는 vector를 반환하거나, 원본을 const 참조로 받으면 원 배열 보존이 보장됩니다.

result[i]=list[n1i]

👉 실습(C++)에서 확인하기

PDF