[파이썬 코딩테스트] 없는 숫자 더하기

ch.2·2024년 7월 5일
0

코딩 테스트

목록 보기
6/21
post-thumbnail

문제

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


첫 번째 시도

def solution(numbers):
    answer = 0
    one = []
    for i in range(0, 9+1):
        one.append(i)
    if len(one - numbers)>=0:
        for a in (one - numbers):
            int(a)
            answer = sum(a)
    return answer 

answer 변수와 one 리스트 변수를 만들고, one 리스트에 0~9까지의 숫자를 추가했다.
이후 one 리스트에서 numbers 리스트를 빼면, one 리스트에 없는 numbers의 요소들이 나올 것이라 생각했다. 그 요소들을 구하고자 a 변수를 만들고 sum 함수로 더했다.

  • 리스트간 빼기 연산은 불가능함.
  • int 함수를 쓸 필요 없음.

두 번째 시도

def solution(numbers):
    answer = 0
    one = []
    for i in range(0, 9+1):
        one.append(i)
    answer = set(one) - set(numbers)
    return sum(answer)

리스트를 집합변수로 type 변환을 한 후에 sum 함수로 더했다.

코딩 식 줄이기

def solution(numbers):
    one = [i for i in range(0, 9+1)]    
    other = [x for x in one if x not in numbers]
    return sum(other)

한 줄로 줄여보았다.


다른 사람의 답안

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

문제에 맞는 함수를 만들어냈다.
통용되는 식은 아니지만 이렇게 논리식이 아닌 수학식으로도 풀 수 있다는 포인트를 알게 되었다.


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

람다를 활용해 간단하게 문제에 쓰이는 함수를 적용하고 만들어냈다.
람다식의 맨 뒤에는 사용하는 배열의 이름을 적어야 하는 줄 알았는데, 적지 않아도 배열이 적용된다는 것을 새롭게 알게 되었다.
함수를 만들 때 def 이후 return이 나오지 않아도 된다는 포인트를 알게 되었다.


def solution(numbers):
    answer=0
    for i in range(1,10):
        if i not in numbers:
            answer += i
    return answer

range를 활용하고 numbers 리스트에 range의 요소인 i가 없으면 answer에 i를 추가한다. not in 을 사용하였다.
정석적인 답안.

profile
데이터 분석 공부중

0개의 댓글