더북(TheBook)

반복된 코드의 간략화 배열을 사용하는 간단한 사례를 하나 더 살펴보자. 다음 코드에서는 주어진 숫자에 따라 달 이름을 표시한다(1Jan, 2Feb, ...).

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월에 대응되도록 하기 위해 첫 번째 요소를 낭비하고 있음에 주의하라.

지금까지 살펴본 정의와 예제는 뒤로하고 이제부터는 재미있는 고전 문제를 풀어보면서 배열을 이용해 얼마나 효율적으로 계산할 수 있는지 잘 보여주는 코드 두 개를 살펴보자. 이 두 경우 모두 인덱스를 효율적으로 배열에 대응시켜 데이터를 활용하는 것이 핵심이며 다른 방법으로는 할 수 없는 해결책을 제시한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.