코딩테스트/백준 문제

[파이썬] 백준 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) 공간만큼 사용하여 공간 효율성도 향상된다.

암튼 좋음. 짧은 문제에서 함수로 만드는게 귀찮아서 그렇지.

 

 

 

[제출 결과]