본문 바로가기
자료구조and알고리즘

[Java]알고리즘 문제 2번

by jackypark 2022. 7. 11.

입력한수(X)부터 입력한수(Y)까지 정돈된수 출력하기

import java.util.*;

public class AlgoSecond {
	List<Integer> numX=new ArrayList<Integer>();
	public static void main(String[] args) {
		AlgoSecond as=new AlgoSecond();
		Scanner sc=new Scanner(System.in);
		System.out.println("Input X (100~9999999)인수 입력");
		int x=sc.nextInt();
		as.splitXNum(x);
		System.out.println("Input Y: "+x+"~9999999인수 입력");
		int y=sc.nextInt();
		as.disp(x, y);//정돈된 수 출력
	}
	public void splitXNum(int num) {// 입력한수 스플릿해주기 
		if(num>0) {
			splitXNum(num/10);// 자리수만큼 재귀
			numX.add(num%10);//어레이리스트에 스플릿한 수 추가
		}		
	}	
	public void disp(int x,int y) {
		int cnt=0;
		while(x<y) {
			int flag=0; //정돈된수인지 아닌지 판단
			for(int i=0;i<numX.size();i++) {
				for(int j=i+1;j<numX.size();j++) {
					if(numX.get(i)>=numX.get(j)) {//앞자리수가 다음자리수보다 크다면
						flag=1;// 정돈이 안된 수
					}					
				}				
			}
			if(flag==0) {//정돈된 수
				System.out.print(x+"\t");
				cnt++;//정돈된 수 몇번 했는지 확인
			}			
			x++;
			numX.clear();// 리스트 삭제
			splitXNum(x);//x넣고 x값 스플릿해서 어레이에 다시저장
		}
		System.out.println();
		System.out.println("Count: "+cnt);
	}
}

댓글