Java/코딩테스트 연습 & 실습

[Java] (실습) 자바 정돈된 수

현기 2022. 7. 11. 18:41
import java.util.ArrayList;
import java.util.Scanner;

public class Q2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		try {
			System.out.println("Input X Number : ");
			int x = sc.nextInt();
			System.out.println("Input Y Number : ");
			int y = sc.nextInt();
			orderlyNumber(x,y);
		} catch(Exception e) {
			System.out.println("잘못 입력하셨습니다. ");
		}
	
	}
	
	// x~y 까지의 정돈된 수를 출력 
	public static void orderlyNumber(int a, int b) {
		ArrayList<Integer> result_arr = new ArrayList<>();

		for(a = a; a<b; a++) {
			if(isOrderly(a)) {
				result_arr.add(a);
			}
		}
		
		for(Integer g : result_arr) {
			System.out.print(g+" ");
		}
		System.out.println("\nCount : "+result_arr.size());
	}
	
	//정돈된 수인지 확인하는 메서드
	public static boolean isOrderly(int a) {
		ArrayList<Integer> arr = new ArrayList<>();
		boolean result = false;
		boolean temp = true; // 모든 자릿 수가 정돈되어야 함으로 그 전 상태를 기억하기 위함
		
		// 숫자 문자열로 변경
		String str = String.valueOf(a);
		
		// 문자열 한 글자 씩 int로 변환 후 arr에 저장
		for(int i=0; i<str.length(); i++) {
			arr.add(Character.getNumericValue(str.charAt(i)));
		}
		
		// 정돈된 수인지 확인
		for(int i=0; i<arr.size()-1; i++) {
			if(arr.get(i) < arr.get(i+1) && temp == true) {
				temp = true;
				result = true;
			} else {
				temp = false;
				result = false;
			}
		}
		
		return result;
	}
}