[SWEA 1926] 간단한 369 게임 — Java 풀이 & 해설

2025. 11. 22. 02:34·코딩테스트/알고리즘

🔗 1. 문제 URL

SWEA 문제 바로가기 👉
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PTeo6AHUDFAUq&categoryId=AV5PTeo6AHUDFAUq&categoryType=CODE&problemTitle=1926&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

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

swexpertacademy.com

 


 

📝 2. 문제 요구사항 정리

이 문제는 입력받은 숫자 N까지 1부터 순서대로 출력하면서,
각 숫자 안에 3, 6, 9가 포함된 개수만큼 ‘-’(하이픈)을 출력하는 문제입니다.

즉, 정상적인 369 게임을 그대로 구현하면 되는 구조입니다.

예를 들어:

  • 숫자 3 → -
  • 숫자 13 → -
  • 숫자 36 → --
  • 숫자 28 → 28

이런 형태로 동작해야 합니다.

 


 

✔ 요구사항 요약

  1. 1부터 N까지 숫자를 순서대로 출력합니다.
  2. 각 숫자를 문자열로 변환해 각 자리수에 '3', '6', '9'가 몇 번 포함되어 있는지 카운트합니다.
    • 3·6·9 숫자가 하나도 없으면 → 숫자 그대로 출력
    • 포함되어 있으면 → 포함된 개수만큼 '-' 출력
  3. 출력은 공백으로 구분합니다.

 


 

✅ 3. 정답 코드 (Java)

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());    // 입력 값

        for (int i = 1; i <= N; i++) {   // 입력 값 1 ~ N 까지
            // 33이 들어왔다고 생각해보자
            String strNum = Integer.toString(i);
            int clapCount = 0;  // 박수 쳐야하는 횟수

            for (int j = 0; j < strNum.length(); j++) {   // 몇번 - 출력해야하는지 구하는 부분 -> clapCount
                char c = strNum.charAt(j);

                if (c == '3' || c == '6' || c == '9') {  // 해당 자리 숫자가 3, 6, 9 중 하나이면
                    clapCount++;
                }
            }

            if (clapCount > 0) {
                // '-'를 clapCount만큼 출력
                for (int k = 0; k < clapCount; k++) {
                    System.out.print("-");
                }
            } else {
                System.out.print(i);
            }

            System.out.print(" ");
        }
    }
}

 


 

💡 4. 풀이하면서 느낀 점

처음에는 단순히 3, 6, 9가 포함되었는지만 확인하면 되는 문제라고 생각했지만,
막상 구현을 시작하니 **“각 자리수에 3·6·9가 몇 번 등장하는지 정확히 세는 것이 핵심”**이라는 점을 다시 깨달았습니다.

 

특히 저는 처음에 13의 경우 ‘1 -’처럼 출력하는 방식으로 문제를 잘못 이해했었는데,
SWEA 1926에서는 숫자에 포함된 3·6·9의 개수만큼 '-'만 출력한다는 규칙이라는 점을 다시 확인하게 되었습니다.

 

또한 숫자를 그대로 정수로 처리하는 방식보다,
문자열로 변환하여 각 자리수를 순회하며 검사하는 방식이 훨씬 직관적이라는 점도 좋았습니다.

 

369 게임은 단순해 보이지만, 이 문제에서는

  • 자리수 탐색
  • 조건 분기
  • 반복문 구조
    이 세 가지를 모두 확인할 수 있어 기초 구현력을 체크하기에 좋은 문제라고 생각합니다.

또한,
하나의 숫자를 문자열로 변환 → 각 문자 탐색 → 카운팅
이 흐름을 이해하고 나니 전체 로직이 자연스럽게 정리되고,
문자열을 활용한 단순 구현 문제에서는 어떤 접근이 효율적인지 다시 확인할 수 있는 문제였습니다.

 

궁금하신 점이나 포스팅에 대한 피드백이 있다면 댓글로 편하게 남겨주세요.
도움이 되셨다면 공감이나 댓글 한 줄 남겨주시면 포스팅을 이어가는 데 큰 힘이 됩니다. 😊

'코딩테스트 > 알고리즘' 카테고리의 다른 글

[프로그래머스 LV.0] 배열 조각하기 — Python 정답 & 해설  (0) 2026.06.11
[프로그래머스 LV.2] 행렬의 곱셈 — Python 정답 & 해설  (0) 2026.05.22
[프로그래머스 LV.1] 모의고사 — Python 정답 & 해설  (0) 2026.05.21
[프로그래머스 LV.1] 두 개 뽑아서 더하기 — Python 정답 & 해설  (0) 2026.05.21
[프로그래머스 LV.2] 조건에 맞는 개발자 찾기 — MySQL 정답 & 해설  (0) 2025.11.27
'코딩테스트/알고리즘' 카테고리의 다른 글
  • [프로그래머스 LV.2] 행렬의 곱셈 — Python 정답 & 해설
  • [프로그래머스 LV.1] 모의고사 — Python 정답 & 해설
  • [프로그래머스 LV.1] 두 개 뽑아서 더하기 — Python 정답 & 해설
  • [프로그래머스 LV.2] 조건에 맞는 개발자 찾기 — MySQL 정답 & 해설
작지만 꾸준한 성장으로
작지만 꾸준한 성장으로
contact
  • 작지만 꾸준한 성장으로
    파랑새
    작지만 꾸준한 성장으로
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • IT (3)
      • 코딩테스트 (23)
        • 알고리즘 (12)
        • MYSQL (11)
      • 패션 (0)
      • 독후감 (0)
      • TIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    sql 코딩테스트
    프로그래머스 lv.2
    mysql
    파이썬
    프로그래머스
    Pandas melt
    Python
    공공데이터 전처리
    코딩테스트
    데이터베이스
    데이터 전처리 파이프라인
    자바
    Programmers
    long format
    프로그래머스 lv.1
    wide format
    데이터 리모델링
    모델 추론
    와이드 포맷 롱 포맷
    SWEA
    CPU Bound
    프로그래머스 lv.0
    I/O Bound
    파이썬코테
    Pandas groupby agg
    백준
    Pandas pivot
    python3
    알고리즘
    코테
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
작지만 꾸준한 성장으로
[SWEA 1926] 간단한 369 게임 — Java 풀이 & 해설
상단으로

티스토리툴바