Today I Learned/Python 문제풀이
프로그래머스 lv1. 없는 숫자 더하기 (set 사용)
하나719
2023. 8. 11. 18:32
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/86051
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 요약
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로 구현해서 에러가 발생하지 않는 함수를 적절하게 사용해보려고 한 점은 잘했다고 생각한다.
반응형