Lv.1 없는 숫자 더하기

zz·2022년 5월 5일
0

프로그래머스

목록 보기
2/36
post-custom-banner

[월간코드챌린지 시즌3 없는 숫자 더하기]


문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ numbers의 길이 ≤ 9
  • 0 ≤ numbers의 모든 원소 ≤ 9
    (numbers의 모든 원소는 서로 다릅니다.)

풀이

def solution(numbers):
    arr = [0,1,2,3,4,5,6,7,8,9]
    answer = -1
    for num in arr:
        if (num not in numbers):
            answer += num
    if (answer != -1):
        answer += 1
    return answer

for loop을 사용해서 한번 given array를 훑어보는 방식을 사용했다.. if else 문을 크게 쓸 수도 있었는데 뭔가.. 나는 indent 많이 되는걸 싫어해서 최소한의 indent로 하고자 마지막 부분에 if만 넣어줬다


다른사람 풀이

1. sum을 이용한 간단한 풀이

def solution(numbers):
    return 45 - sum(numbers)

보자마자 감탄한 풀이...
진짜.. 생각조차 못했다. 없는 숫자 자체가 아니라 숫자의 합만을 구하는거니까 당연히. 저렇게 해도 된다..
0~9를 모두 더했을때 합인 45에서 주어진 숫자들의 합만큼만 없애는 방법.

2. lambda를 이용한 풀이

solution = lambda x: sum(range(10)) - sum(x)

람다..역시.. 최고.... ㅋㅋㅋㅋㅋ 간단한 함수를 짜는데에는 이게 최고인것 같다.

3. List를 이용한 풀이

def solution(numbers):
    return sum([i for i in [1,2,3,4,5,6,7,8,9,0] if i not in numbers])

간단하게 if 랑 not 을 이용해서도 짤 수 있었다. 다른 문제에서 한번 썼던 문법인데 까먹었음.. 휴..

profile
응애 나 애기개발자
post-custom-banner

0개의 댓글