반응형
https://school.programmers.co.kr/learn/courses/30/lessons/86051
문제 요약
0 ~ 9 사이의 정수가 들어있는 numbers 리스트에서 0 ~ 9 중에 없는 숫자를 더해서 출력하기
문제풀이 아이디어
- numbers 리스트는 중복된 값이 없다고 하니까, 같은 값이 2번 있을 수 없다는 점을 파악
- 0 ~ 9 까지 들어있는 set를 만들고, 이 set가 돌면서 numbers 리스트에 있는 값을 지워버리고 set에 남아있는 값을 합치자
- set 사용한 이유
- 중복 없는 값으로 0~9까지 수로 이루어진 집합을 만들기 위해
- set에서 사용가능한 discard() 함수를 사용하기 위해 -> remove는 없는 값을 지우려할 때 에러가 발생하지만, discard는 에러가 발생하지 않음
- set 사용한 이유
나의 문제 풀이
def solution(numbers):
all = set(range(10))
for i in numbers:
all.discard(i)
return sum(all)
다른 사람 풀이
def solution(numbers):
return 45 - sum(numbers)
문제풀고 매우 뿌듯했는데,,,,
for문을 돌면서 하나하나 비교해서 버릴필요 없이 0~9 전체 합을 구한 뒤 , numbers 에 있는 값의 합을 빼버리면 아주 간단했다 ^^..
회고
계속 하나하나 비교하는 형태로 푸는게 1차적으로 떠오르는데, 수학적으로 어떻게 간단하게 풀어낼 수 있을지 고민해보면서 풀어야할것 같다. 그치만, 단순하게 list로 구현하지 않고 set로 구현해서 에러가 발생하지 않는 함수를 적절하게 사용해보려고 한 점은 잘했다고 생각한다.
반응형
'Today I Learned > Python 문제풀이' 카테고리의 다른 글
프로그래머스 lv2. 기능개발 (스택/큐로 풀기) (2) | 2023.09.06 |
---|---|
프로그래머스 lv1. 음양더하기 (zip 사용해서 간단하게) (0) | 2023.08.10 |
[프로그래머스] lv0. 더크게 합치기 (0) | 2023.06.09 |
[프로그래머스] lv2. 프린터 (0) | 2020.11.16 |
[프로그래머스] Lv1. 완주하지 못한 선수 (0) | 2020.11.06 |