삐까냥의 파도타기

Q1038. 감소하는 수 본문

코딩/백준 알고리즘

Q1038. 감소하는 수

금손형아 2019. 3. 3. 11:38

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