우당탕탕 개발일지

[SWEA] 1926. 간단한 369게임(Java, D2) 본문

코테/SW Expert Academy

[SWEA] 1926. 간단한 369게임(Java, D2)

ujin302 2024. 4. 25. 17:39
반응형

문제 

1. 숫자 1부터 순서대로 차례대로 말하되, “3” “6” “9” 가 들어가 있는 수는 말하지 않는다.
2. "3" "6" "9"가 들어가 있는 수를 말하지 않는대신, 박수를 친다. 이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다.  
예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다.
 

입력으로 정수 N 이 주어졌을 때, 1~N 까지의 숫자를 게임 규칙에 맞게 출력하는 프로그램을 작성하라.

박수를 치는 부분은 숫자 대신, 박수 횟수에 맞게 “-“ 를 출력한다.

여기서 주의해야 할 것은 박수 한 번 칠 때는 - 이며, 박수를 두 번 칠 때는 - - 가 아닌 -- 이다. 

 

입출력 예

 

 

풀이

1부터 확인하면서 n까지 숫자인지 박수인지 확인한다. 

 

1. 하나의 숫자에 박수 횟수 구하기 

2자리수 이상의 숫자들에 대비하여 for문을 사용하였다. 

2자리 이상일 경우 한자리씩 3의 배수 여부를 판단한다. 

3일경우 '-'를 저장하고 그렇지 않으면 그냥 지나간다. 

여기서 tempCount 변수를 사용하여 '-'가 몇개를 더했는지 확인한다. 

tempCount 변수를 통해서 박수 횟수를 결정할 수 있다.

 

2. 박수 횟수 판단하기

 

if문을 통해서 '-' 문구의 여부를 판단한다. 

존재할 경우에는 3, 6, 9가 존재한다고 인식하게 된다. 

그 후, 3,6,9의 개수와 숫자의 자리수가 동일한지 확인하여 박수의 횟수를 결정할 수 있다. 

만약 35일 경우, tmepCount = 1, str 길이 = 2 으로 result에는 "-"를 더하게 된다. 

 

해당 숫자에 대한 박수 횟수를 결정하면 공백을 더한다. 

 

 

코드

Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        String result = "";

        for (int i = 1; i < num + 1; i++) {

            String str = i + "";
            String tempStr = "";
            int tempCount = 0;
            for (int k = 0; k < str.length(); k++) {
                int tempNum = Character.getNumericValue(str.charAt(k));
                if (tempNum != 0 && tempNum % 3 == 0) {
                    tempStr += "-";
                    tempCount++;
                }
            }
            if (tempStr.contains("-")) {
                if (tempCount == str.length()) {
                    result += tempStr;
                } else
                    result += "-";
            } else {
                result += str;
            }

            result += " ";
        }

        System.out.println(result);

 

SWEA 문제 

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PTeo6AHUDFAUq

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

반응형