[코딩 테스트 RUN] SWEA 수업 : 1926.간단한 369게임

코테런/SWEA(알고리즘 수업)
2026.03.10

 

⚠️ 주의!
SWEA에서 낸 코딩 문제에 대한 해답이 들어있습니다.
열람 시 주의해주세요.

 

[SW Expert Academy] 1926. 간단한 369게임

 

SW Expert Academy

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

swexpertacademy.com

 

절대로 정규식이나 replace로는 풀 수 없다. 방법이 여러 가지 있다. charAt등의 방법을 쓰는 경우도 있는데, 이 경우 숫자를 String 변환해야한다.

내 경우는 숫자가 1000까지 있으므로, 그냥 모든 방식을 나머지 연산하여 3 6 9를 확인하고 그에 따라 -의 개수를 카운팅했다. 그리고 그만큼을 숫자 대신 출력해주면 된다. 만약 -의 개수가 0이면 그대로 숫자를 출력한다.

 

정답

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();

        for (int i = 1; i <= N; i++) { // 1000까지이므로 나눠서 3 6 9면 clap을 추가
            int clap = 0;
            if (i % 10 == 3 || i % 10 == 6 || i % 10 == 9) clap++;
            if (i / 10 % 10 == 3 || i / 10 % 10 == 6 || i / 10 % 10 == 9) clap++;
            if (i / 100 % 10 == 3 || i / 100 % 10 == 6 || i / 100 % 10 == 9) clap++;
            if (i / 1000 % 10 == 3 || i / 1000 % 10 == 6 || i / 1000 % 10 == 9) clap++;


            if(clap == 0) sb.append(i);
            else {  for(int k = 0; k < clap; k++) sb.append("-"); }

            sb.append(" ");
        }

        System.out.print(sb.toString().trim());
    }
}