반응형
https://www.acmicpc.net/problem/4436
가볍게 브론즈 문제를 하나 풀어봤다. (솔브드 마라톤 시스템 추천 문제)
모든 k 값을 1부터 다 시도해보면서 브루트포스로 구현하면 되는 문제다.
근데 푸는데 생각보다 시간이 오래 걸렸다.. 그 이유는 set 연산자를 착각해서 그렇다.
나는 s.union() 메서드가 기존 집합에 자동적으로 더해주는 줄 알았는데, 기존 집합이 변하지 않고, 새로운 합집합을 반환한다는 점을 프린트로 찍으면서 디버깅하느라 10분정도 걸려서 푼 것 같다..
이 문제 덕분에 파이썬 집합 연산은 새로운 집합을 반환하므로 기존 집합을 덮어써야 한다는 것을 깨달을 수 있었다.
import sys
input = sys.stdin.readline
while True:
try:
k = 0
n = input().rstrip()
s = set(list(n))
num = 0
while len(s) < 10:
num += int(n)
check = set(list(str(num)))
s = s.union(check)
k += 1
print(k)
except:
break
파이썬에서 이 문제와 같이 끝이 정해지지 않은 입력을 받는 경우엔 try catch 로 묶어서 EOF 에러를 처리하면 된다.
반응형
'알고리즘 (PS) > BOJ' 카테고리의 다른 글
[백준] 1166 - 선물 (0) | 2024.11.13 |
---|---|
[백준] 4315 - 나무 위의 구슬 (Python) (0) | 2024.11.12 |
[백준] 11437 - LCA (Python) (0) | 2024.11.08 |
[백준] 14442 - 벽 부수고 이동하기 2 (Java) (0) | 2024.11.07 |
[백준] 1949 - 우수 마을 (Java) (0) | 2024.11.06 |