반응형
369 게임을 만들면 되는 문제이다.
보통 다른 369문제는 범위가 99까지였던 것 같은데 이건 1000까지여서 오잉? 했다.
풀이
import java.util.Scanner;
public class JAVA1 {
static Scanner sc = new Scanner(System.in);
public static void solution(int n){
for(int i=1;i<=n;i++){
String values = String.valueOf(i);
if(values.contains("3") || values.contains("6") || values.contains("9")){
for(int j=0;j< values.length();j++){
if(values.charAt(j)=='3' ||values.charAt(j)=='6' ||values.charAt(j)=='9'){
System.out.print("-");
}
}
System.out.print(" ");
} else {
System.out.print(i + " ");
}
}
}
public static void main(String[] args) {
int n = sc.nextInt();
solution(n);
}
}
숫자의 자릿수를 쉽게 검사하기 위해 주어진 숫자를 대신 문자열로 변환하는 방법을 생각했다.
- 주어진 숫자를 문자열로 변환한다.
- 각 주어진 문자열에 3,6,9가 포함되어 있는지 1차 확인한다.
- 그 후 포함되어 있다면 문자열의 각 자릿수에 3,6,9가 있는지 확인해 있다면 - 출력한다.
다른 풀이
import java.util.Scanner;
public class JAVA1 {
static Scanner sc = new Scanner(System.in);
public static void solution(int n) {
for (int i = 1; i <= n; i++) {
int number = i;
int count = 0;
while (number > 0) {
int digit = number % 10;
if (digit == 3 || digit == 6 || digit == 9) {
count++;
}
number /= 10;
}
if (count > 0) {
for (int j = 0; j < count; j++) {
System.out.print("-");
}
} else {
System.out.print(i);
}
System.out.print(" ");
}
}
public static void main(String[] args) {
int n = sc.nextInt();
solution(n);
}
}
이건 숫자 연산을 통해서 문제를 해결한 코드이다.
- 숫자를 10으로 나누면서 각 자릿수를 뽑아낸다.
- 뽑아낸 각 자릿수가 3, 6, 9이면 -를 출력한다.
- 다 끝났을 때 아무 -도 없으면 원래 숫자를 출력한다.
예를 들자면 39를 처리할 때
- 39 % 10 = 9 → 9이므로 count++
- 39 / 10 = 3 → 3 % 10 = 3 → 3이므로 count++
- 3 / 10 = 0 → 끝남
- count가 2이므로 - - 출력
처음에는 문자열로 변환하는 접근을 했다가 숫자연산을 가지고도 풀이해 봤다.
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
| [완전탐색] 프로그래머스 - 두 개 뽑아서 더하기 (0) | 2026.03.16 |
|---|---|
| [완전탐색] 프로그래머스 - 모의고사 (0) | 2026.03.16 |
| [SWEA]21425. += (0) | 2025.04.28 |
| 04. 단어 뒤집기 (0) | 2025.04.25 |
| 03. 문장 속 단어 (0) | 2025.04.24 |