삐까냥의 파도타기
Q1038. 감소하는 수 본문
n번째의 감소하는 수를 저장하며 나아가는 로직
감소하는 로직은 간단합니다
마지막 자리인 일의 자릿수의 숫자가 9인 경우 0~8까지 이동할수 있으며
일의 자릿수의 숫자가 0보다 큰 n인 경우 0~n까지 이동가능합니다.
숫자를 카운트하며 감소하는 수를 계산하면 됩니다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.StringTokenizer; public class Q1038 {
static LinkedList<Long> list = new LinkedList<>(); public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(st.nextToken()); if (num == 0) { System.out.println(0); return; }
int result = 0; for (long i = 1; i <= 9; i++) { result++; if (result == num) { System.out.println(i); return; } else { list.add(i); } }
while(!list.isEmpty()) { long nowNum = list.poll(); long lastNum = nowNum % 10; if (lastNum == 0) { continue; } else { for (int i = 0; i <= lastNum-1; i++) { result++; long nextNum = nowNum*10+i; if (result == num) { System.out.println(nextNum); return; } else { list.add(nextNum); } } } } System.out.println(-1); } } |
'코딩 > 백준 알고리즘' 카테고리의 다른 글
Q2352. 반도체 설계 (0) | 2019.03.06 |
---|---|
Q5582. 공통 부분 문자열 (0) | 2019.03.03 |
Q2631. 줄세우기 (0) | 2019.03.02 |
Q2169. 로봇 조종하기 (0) | 2019.03.02 |
Q2240. 자두나무 (0) | 2019.03.02 |