코딩테스트/백준 문제
[파이썬] 백준 1681번(브론즈2) : 줄 세우기
김뚱입니다
2025. 5. 20. 21:28
[문제]
문제 : 백준 1681번_줄 세우기
[코드]
import sys
input = sys.stdin.readline
N, L = map(int, input().split())
num = 1
result = []
while len(result) < N:
if str(L) not in str(num):
result.append(num)
num += 1
print(result[-1])
[리팩터링 코드]
import sys
input = sys.stdin.readline
def find_max_label(N, L):
count = 0
num = 1
L = str(L)
while True:
if L not in str(num):
count += 1
if count == N:
return num
num += 1
N, L = map(int, input().split())
print(find_max_label(N, L))
원래 코드는 result 리스트에 유효 숫자들을 저장했는데
이 코드에서는 숫자를 저장하지 않고 count로만 센다.
이렇게 하면 불필요한 리스트 접근을 하지 않고 return 할 수 있어서 빠르다.
또한 숫자 저장도 하지 않아서 O(1) 공간만큼 사용하여 공간 효율성도 향상된다.
암튼 좋음. 짧은 문제에서 함수로 만드는게 귀찮아서 그렇지.