더북(TheBook)

데이터 돌려쓰기: 중복 피하기

코드는 일종의 논리 흐름입니다. 문제를 해결하기 위해 일련의 풀이 흐름이 존재하고, 이 흐름을 얼마나 잘 최적화하는지는 프로그래머의 실력입니다.

능숙한 프로그래머라면 연속적인 논리를 한 번에 합쳐 사용하며, 불필요한 실수를 줄이는 데 집중합니다. 간단한 예로 설명해보겠습니다. 주어진 데이터 10만 개를 제곱해서 반환하라는 문제의 코드를 다음처럼 짰다고 합시다.

def solution(data):
    answer = data
 
    for i in range(len(answer)):
        temp = answer[i] * answer[i]
        answer[i] = temp

    return answer

이처럼 필요하지 않은 변수를 항상 할당하는 방식으로 코드를 짜면 수정하지 말아야 할 데이터를 수정하는 등 문제 외적인 부분(휴먼 에러)에서 실수하기 쉬워집니다. 가령 data 값을 answer 변수에 할당한 뒤 data 변수를 수정하면 answer에 할당된 data가 변하므로 나중에 answer 변수를 조회했을 때 수정된 값을 보고 당황할 수 있습니다. 이러한 불필요한 연산 낭비를 막기 위해선 항상 의미 없는 데이터의 복사나 연산이 발생했는지 확인해야 합니다.

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