2018. 4. 25. 16:13, 알고리즘/BOJ
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) 자리 수를 바로 반환합니다. 구현이 살짝 까다롭네요.
'알고리즘 > 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