🔗 1. 문제 URL
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
📝 2. 문제 요구사항 정리
이 문제는 입력받은 숫자 N까지 1부터 순서대로 출력하면서,
각 숫자 안에 3, 6, 9가 포함된 개수만큼 ‘-’(하이픈)을 출력하는 문제입니다.
즉, 정상적인 369 게임을 그대로 구현하면 되는 구조입니다.
예를 들어:
- 숫자 3 → -
- 숫자 13 → -
- 숫자 36 → --
- 숫자 28 → 28
이런 형태로 동작해야 합니다.
✔ 요구사항 요약
- 1부터 N까지 숫자를 순서대로 출력합니다.
- 각 숫자를 문자열로 변환해 각 자리수에 '3', '6', '9'가 몇 번 포함되어 있는지 카운트합니다.
-
- 3·6·9 숫자가 하나도 없으면 → 숫자 그대로 출력
- 포함되어 있으면 → 포함된 개수만큼 '-' 출력
- 출력은 공백으로 구분합니다.
✅ 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 |