반복된 코드의 간략화 배열을 사용하는 간단한 사례를 하나 더 살펴보자. 다음 코드에서는 주어진 숫자에 따라 달 이름을 표시한다(1
은 Jan
, 2
는 Feb
, ...).
if m == 1: stdio.writeln('Jan') elif m == 2: stdio.writeln('Feb') elif m == 3: stdio.writeln('Mar') elif m == 4: stdio.writeln('Apr') ... elif m == 11: stdio.writeln('Nov') elif m == 12: stdio.writeln('Dec')
앞에 나온 지루한 코드는 달 이름을 저장한 배열을 이용해 다음과 같이 간략히 구현할 수 있다.
MONTHS = ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] ... stdio.writeln(MONTHS[m])
프로그램의 여러 곳에서 숫자로 월명을 알아내야 할 때는 이 기법이 상당히 유용하다. 여기에서도 MONTHS[1]
이 1
월에 대응되도록 하기 위해 첫 번째 요소를 낭비하고 있음에 주의하라.
지금까지 살펴본 정의와 예제는 뒤로하고 이제부터는 재미있는 고전 문제를 풀어보면서 배열을 이용해 얼마나 효율적으로 계산할 수 있는지 잘 보여주는 코드 두 개를 살펴보자. 이 두 경우 모두 인덱스를 효율적으로 배열에 대응시켜 데이터를 활용하는 것이 핵심이며 다른 방법으로는 할 수 없는 해결책을 제시한다.