문제 상세 설명1부터 N까지의 수 중 차례대로 출력하는데 3, 6, 9가 포함된 경우 - 로 변환해 출력한다.
숫자 1부터 순서대로 차례대로 말하되, “3” “6” “9” 가 들어가 있는 수는 말하지 않는다.
"3" "6" "9"가 들어가 있는 수를 말하지 않는대신, 박수를 친다. 이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다.
예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다.
입력으로 정수 N 이 주어졌을 때, 1~N 까지의 숫자를
게임 규칙에 맞게 출력하는 프로그램을 작성하라.
박수를 치는 부분은 숫자 대신, 박수 횟수에 맞게 “-“ 를 출력한다.
여기서 주의해야 할 것은 박수 한 번 칠 때는 - 이며, 박수를 두 번 칠 때는 - - 가 아닌 -- 이다.
[제약사항]
N은 10이상 1,000이하의 정수이다. (10 ≤ N ≤ 1,000)
[입력]
입력으로 정수 N 이 주어진다.
[출력]
1 ~ N까지의 숫자를 게임 규칙에 맞게 출력한다.
| 입력 | 출력 |
|---|---|
| 10 | 1 2 - 4 5 - 7 8 - 10 |
package D2;
//SWEA D2 1926번 "간단한 369게임" 문제 풀이
import java.util.*;
public class N1926_a {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
System.out.print(solution(N));
scanner.close();
}
public static String solution(int N) {
StringBuilder result = new StringBuilder();
for (int i = 1; i <= N; i++) {
result.append(transfer(i));
if (i < N) result.append(" ");
}
return result.toString();
}
public static String transfer(int num) {
StringBuilder number = new StringBuilder();
int n = num;
while(n > 0) {
if (n % 10 == 3 || n % 10 == 6 || n % 10 == 9) {
number.append("-");
}
n /= 10;
}
if (number.length() == 0) number.append(num);
return number.toString();
}
}
-로 변환한다.n /= 10 을 통해 검사한 뒷자리를 없애고 n > 0 까지 반복한다.package D2;
//SWEA D2 1926번 "간단한 369게임" 문제 풀이
import java.util.*;
public class N1926_a {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
System.out.print(solution(N));
scanner.close();
}
public static String solution(int N) {
StringBuilder result = new StringBuilder();
for (int i = 1; i <= N; i++) {
result.append(transfer(i));
if (i < N) result.append(" ");
}
return result.toString();
}
public static String transfer(int num) {
boolean has369 = false;
StringBuilder number = new StringBuilder();
int n = num;
while(n > 0) {
int digit = n % 10;
if (digit == 3 || digit == 6 || digit == 9) {
has369 = true;
number.append("-");
}
n /= 10;
}
// 조건문 단순화
return has369 ? number.toString() : String.valueOf(num);
}
}