알고리즘 (PS)/BOJ
[백준] 4436 - 엘프의 검
에버듀
2024. 11. 9. 22:54
반응형
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 에러를 처리하면 된다.
반응형