[BOJ] 1040번: 정수

https://www.acmicpc.net/problem/1040


주어진 N, K에 대해, 최대한 많은 자리를 고정해두고 한 자리를 바꿔가며 조건을 만족하는게 가능한지를 확인합니다. 예를 들어


47914 3이라면, 일단 47914가 K = 3을 만족하는지 확인합니다. 47914에는 수가 4개 쓰였으므로 불가능합니다. 이후에는


4791을 고정하고, 맨 끝의 4를 5,6,7,8,9로 바꾸어가며 가능한지 확인합니다. 이 중에 가능한 것이 없다면


479를 고정하고 1을 2,3,4,5,6,7,8,9로 바꾸어가면 4792X, 4793X, ... 이 가능한지 확인합니다.


가능한 것을 찾는다면 그 것이 N 이상의 가능한 수 중에 최소임이 보장됩니다.


이렇게 했을 때 가능한 것이 존재하지 않는다면 N자리의 수 중에서는 되는 것이 없다는 의미이므로 10002345.. 와 같은 형태의 max(len(N)+1,K) 자리 수를 바로 반환합니다. 구현이 살짝 까다롭네요.


https://github.com/blisstoner/BOJ/blob/master/1040.py

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 1179번: 마지막 조세퍼스 문제  (0) 2018.04.25
[BOJ] 11025번: 조세퍼스 문제 3  (2) 2018.04.25
[BOJ] 1168번: 조세퍼스 문제 2  (2) 2018.04.25
[BOJ] 1134번: 식  (0) 2018.04.24
[BOJ] 1035번: 조각 움직이기  (0) 2018.04.23
[BOJ] 10777번: Greedy For Pies  (0) 2018.04.23
  Comments