
문제 설명
- 한자리 숫자 L을 사용하지 않고 1부터 시작하는 N개의 숫자를 만들어야 합니다.
접근법
- 반복문을 사용해야 합니다.
- 언제 N번째 숫자가 등장할 지 모르기 때문에
for
문이 아닌 while
문을 사용합니다.
- 긴 숫자(N)에 짧은 숫자(L)가 포함되는지 판단하기 위해서는
문자열
로 바꾼 뒤 in
기능을 활용해야 합니다.
정답
N,l = list(map(int,input().split(' ')))
num = 1
cnt = 0
while True:
if str(l) not in str(num):
cnt+=1
if cnt == N:
print(num)
break
num+=1
else:
num+=1
기타
- 시간초과가 났다면?
- N = 1,000,000이고 L = 1일 때 2,894,772의 결과값이 나온다. 이는 프로그램을 돌려서 구한 숫자일 뿐 나는 문제 조건만으로 시간복잡도를 유추하지 못했다(계산 가능하신분은 댓글 부탁드립니다)
- 시간초과가 발생했다면 선형탐색을 포기해야 하는데 이외에 어떤 방법이 가능한지 잘 모르겠다 (아시는분은 댓글 부탁드립니다)