-
[알고리즘 문제] 백준 알고리즘 : 감소하는 수IT/알고리즘 2019. 9. 15. 23:21
친구들과 함께 새롭게 시작한 1일 1커밋 프로젝트!!!!
덕분에 오랜만에 알고리즘 문제를 풀어보았다.
생각보다 머리가 너무 안돌아가서 당황했다 ㅠㅜ 열심히좀 해야할듯
복귀기념 문제는 간단한 걸로 준비해봤땅 ^*^
n번째 감소하는 수가 뭔말인가 한참을 고민했는데 말그대로
1은 1번째 2는 2번째 --- 쭉해서 18번째의 감소하는 수는 무엇인가 출력하는 것이다.
ex) 12번째 -> 1,2,3,4,5,6,7,8,9,10,20,21 해서 출력되는 수는 21이 된다
소스코드 ↓↓↓
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273public class lowNumber {public static void main(String[] args) {// TODO Auto-generated method stubint x = 0; //감소하는 수int count = 0; //n번쨰 감소하는 수Scanner scan = new Scanner(System.in);int n = scan.nextInt(); //n번째 입력int[] array = new int[100]; //감소하는 수인지 비교하기 위한 배열while(true) {if(n == 0) { //0번째 감소하는 수는 0이다break;}x++; //숫자 증가if((x < 10) || (x%10 == 0 && x/10 < 10)) { //1~9는 모두 감소하는 수이고,//System.out.println(x); 10,20,30 10단위도 모두 감소하는 수count++;}else {int temp = x;int i=0;int count2 = 0;while(true) {array[i] = temp%10; //숫자 각 자리수를 비교하기위해 각 자리를 배열에 넣는다temp = temp/10;if(temp < 10) {i++;array[i] = temp;count2++;break;}count2++;i++;}String test = "감소";//각 자리를 비교하여 감소하는 수 인지 확인for(int j=0; j<count2; j++) {if(array[j] < array[j+1]) {continue;}else {test = "증가";break;}}if(test.equals("감소")) {//System.out.println(x);count++;}}//해당 숫자가 n번째 감소하는 수이면 반복문 종료if(count == n) {break;}}System.out.println(x);}}cs 실행결과 ↓↓↓
자바하는법을 살짝 까먹은거 같지만 1일1커밋 하면서 다시 되살려봐야겠다 ㅎㅎ..
오랜만에 해도 부담없이 풀 수 있는 문제였다!
'IT > 알고리즘' 카테고리의 다른 글
[알고리즘 문제] 프로그래머스 문자열 다루기 기본 (2) 2019.09.18 [알고리즘 문제] 프로그래머스 행렬의 곱셈 (2) 2019.05.22 [알고리즘 문제] 코딩도장 로또프로그램 (0) 2019.05.05 [알고리즘 문제] 프로그래머스 콜라츠 추측 (2) 2019.05.01 [알고리즘 문제] 프로그래머스 이상한 문자 만들기 (0) 2019.04.28