문제
https://school.programmers.co.kr/learn/courses/30/lessons/86051
📔 문제
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
🚫 제한사항
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.
📝 입출력 예시
numbers | result | |
[1,2,3,4,6,7,8,0] | 14 | 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 한다. |
[5,8,4,0,6,7,9] | 6 | 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 한다. |
🧮 알고리즘 분류
- 조건문
- 반복문
📃 소스 코드
def solution(numbers):
ans = []
for i in range(0,10,1): # 1 스텝씩 증가하도록
if i in numbers:
pass
else:
ans.append(i) # ans 리스트에 num 추가
answer = sum(ans)
return answer
- solution 이라는 이름의 함수를 정의하며, 하나의 인자 numbers를 입력받는다.
- 비어있는 ans 리스트를 생성하여, 0~9까지의 숫자 중 numbers에 포함되지 않는 숫자들을 저장하기 위해 사용한다.
- range(0, 10, 1)은 0부터 9까지의 숫자를 1씩 증가하며 생성한다.
- for 루프를 사용해 이 숫자들을 하나씩 변수 i에 할당하면서 반복한다.
- 현재 반복 중인 숫자 i가 numbers 리스트에 포함되어 있는지 확인하고 만약 i가 numbers에 포함되어 있다면 True / False를 반환한다.
- if 조건이 True일 때 pass를 실행한다. pass는 아무 작업도 수행하지 않는 명령어로, 여기서는 단순히 다음 반복으로 넘어간다.
- if 조건이 False, 현재 숫자 i가 numbers에 포함되지 않은 경우 실행되며, ans.append(i)는 ans 리스트에 현재 숫자 i를 추가합니다.
📃 그 외 코드
def solution(numbers):
return 45 - sum(numbers)
solution = lambda x: sum(range(10)) - sum(x)
위 두개의 코드는
0부터 9까지의 합이 45가 된다는 것을 이용했다.
numbers 리스트에 포함된 숫자의 합이 31일 때, 빠진 숫자들의 합은 14이라는 값이 나온다. 그러면 5와 9가 빠졌다는 것을 알아낼 수 있다는 점을 이용했다.
728x90
'Algorithm > 코딩 테스트' 카테고리의 다른 글
그리디 코테 파이썬 문제 (1) | 2025.01.26 |
---|---|
[프로그래머스 Lv.1] 같은 숫자는 싫어 (0) | 2025.01.21 |