문제
Algorithm
1~n까지 숫자를 붙여서 썼는데, 일부분이 지워졌을때 최소의 n을 구하는 문제이다.
예시로 234092를 봐보자. 2는 2에서, 3은 3에서, 4는 4에서, 0은 10에서 나온다. 그다음 9는 최소의 n이 되려면 19에서 나와야하고, 2는 20에서 나와야한다. 그래서 n이 20이 된다.
숫자열의 인덱스를 나타내 줄 포인터를 설정하고, 현재숫자 i 를 정한다. while문으로 숫자를 증가시켜가면서 숫자의 자릿수가 배열에 있으면 포인터를 증가시켜서 포인터가 숫자열의 길이를 넘어가면 종료하고 현재숫자의 자릿수를 비교하다가 중간에 수가 있어서 포인터가 숫자열의 길이를 넘어가게 되면 index오류가 나오니 중간에 나가는 구문도 설정해준다.
while문 끝에 i에 1을 더해줬으므로 출력할때 1을 빼준다.
Code
input = __import__('sys').stdin.readline
import math
n = list(map(str,input().strip()))
i = 1
now_point = 0
while now_point <len(n) :
temp = str(i)
for j in range(len(temp)):
if now_point >= len(n):
break
if temp[j] == n[now_point]:
now_point+=1
i+=1
print(i-1)
'Koala - 10기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[ 백준 / Python ] #9663 N-Queen (1) | 2023.05.26 |
---|---|
[ 백준 / Python ] #5430 AC (0) | 2023.05.21 |
[백준 / Python] # 2812번 크게 만들기 (0) | 2023.05.13 |
[백준 / Python] #1124 언더프라임 (0) | 2023.05.12 |
[백준/17502번]JAVA 클레어와 펠린드롬 (0) | 2023.05.07 |