[프로그래머스] 없는 숫자 더하기

computerphilosopher·2022년 7월 19일
2

문제

https://school.programmers.co.kr/learn/courses/30/lessons/86051

풀이

우선 numbers의 원소를 set에 담아두고, 없는 숫자를 찾아 합을 구하는 naive한 방식으로 풀 수 있다.

좀 더 최적화된 해법을 찾기 위해 문제의 조건에 주목하자.

  • 정확히 어떤 숫자가 없는지 구할 필요는 없다. numbers 배열에 없는 숫자의 합만 구하면 된다.
  • numbers의 원소는 중복되지 않는다.

0부터 9까지 모두 있는 배열의 합을 구하면 45이다. numbers에 1이 없다면 sum(numbers)는 44, 1과 4가 없다면 40이 될것이다. 배열에 중복이 없기 때문에 sum(numbers)은 없는 숫자의 합 만큼만 줄어든다.

따라서 답은 45 - sum(numbers)과 같다.

코드 (python)

def solution(numbers):
    return (1+2+3+4+5+6+7+8+9) - sum(numbers)

0개의 댓글