쫌 고민을 많이 했다.
우선 문제를 간단히 정리하자면
1<= x <= 999999 의 숫자가 입력되면
이 수에 포함되어 있는 숫자들을 이용하여 만든 수들 중에 입력된 수보다 큰 최소수를 구하는 문제이다.
다소 문제 설명이 어렵지만,
156을 보자면 156이 포함되어 있는, 156의 자리수로 만들 수 있는 숫자는
156, 165, 516, 561, 615, 651 등등이 있다.
이 중 입력된 156보다 큰 최소 수는 165이다.
문제 풀이)
처음에는 어떻게 풀어야 되나 굉장히 고민을 많이 했다. 156의 자리수를 가지고 만들 수 있는 수들을 다 구한다음에 정렬하고,
입력받은 수 보다 큰 숫자를 출력해야 되나? 가 첫 번째 떠오른 방법이었다. 일단 1~999999이기 때문에 숫자를 만드는 방법에 대해서 어려운 점이 있었다.
한번 더 생각해보니까
1~999999까지 for문을 돌리면서 조건을 만족시키는 숫자를 캐치해내면 되겠다고 생각했다.
예를 들어 156이 입력되면
1) 156~999999까지 반복문을 수행한다.
2) 각 숫자들마다 자리 수에 있는 숫자들을 판별하여 1,5,6에 부합한지를 체크한다.
3) 만약 조건에 부합하면 바로 출력하고 프로그램을 끝낸다.
4) 조건에 부합하지 않으면 0을 출력한다.
'알고리즘문제풀이' 카테고리의 다른 글
2670_연속부분최대곱 (0) | 2015.04.09 |
---|---|
2668_숫자고르기 (0) | 2015.04.09 |
더블릿_계단오르기(dp) (2) | 2015.04.07 |
더블릿_이진 검색 (0) | 2015.04.06 |
도블릿_rank sort (0) | 2015.04.06 |