Problem Solving

[Java] Requirements Q045: 369 게임

Isaac S. Lee 2023. 7. 28. 13:57
package com.test.question;

import java.util.Scanner;

public class Q045 {
	public static void main(String[] args) {
		/*
		● 요구사항
		사용자가 입력한 범위의 숫자까지 369 게임 과정을 출력하시오.
		
		● 조건
		- 최대 3자리까지만 입력하시오.
		
		● 입력
		최대 숫자: 50 
		
		● 출력
		1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20 
		21 22 짝 24 25 짝 27 28 짝 짝 짝 짝 짝짝 짝 짝 짝짝 짝 짝 짝짝 40 
		41 42 짝 44 45 짝 47 48 짝 50
		
		3으로 나누어지거나,
		
		3 6 9 13 16 19 23 26 29 30 31 32 33 34 35 36 37 38 39
		*/
		
		// 사용자로부터 숫자를 입력받기 위한 Scanner 객체 생성
        Scanner scan = new Scanner(System.in);

        // 최대 숫자 입력
        System.out.print("최대 숫자: ");
        int num = scan.nextInt();
        
        for (int i = 1; i <= num; i++) {
        	
        	if (0 < getclap(i)) {
		        for (int j = 0; j < getclap(i); j++) {
		        	System.out.printf("짝");
		        }
        	}
        	else {
        		System.out.printf("%d", i);
        	}
        	System.out.printf(" ");
        }
        
        scan.close();
    }

    private static int getclap(int num) {
    	int stac = 0; // 박수 스택
    	int digit; // num을 10으로 나눈 나머지 값
    	
    	// num이 0이 될 때까지 무한루프
        while (num != 0) {
            digit = num % 10;
            num = num / 10;
            // 369 > 36 > 3 > 0
            // 한 자리씩 제거하면서 입력한 숫자 중 3, 6, 9가 있는지 판단
            
            if (digit == 3) {
            	stac++;
            }
            if (digit == 6) {
            	stac++;
            }
            if (digit == 9) {
            	stac++;
            }
        }
        return stac;
    }
}