문제 : boj14381
0부터 9까지의 모든 숫자를 체크하는건 HashSet을 사용하거나(size()가 10이 된다면 모두 찾은 것), 10칸짜리 배열을 사용하면 할 수 있다.
이제 시뮬레이션을 만들면 된다. 어떤 시뮬레이션이냐면, N을 입력받은 후 1N, 2N, 3N, ... 하고 적당히 100N 까지 각 숫자를 만들면서 각 자리수를 HashSet이나 배열에 담는다. 중간에 10개의 숫자가 모두 나왔다면 중지하고, 그렇지 않다면 적당히 큰 수 까지 직접 가보면 된다.
예를들어 다음과 같다.
N이 11이었다면 다음과 같은 숫자가 체크될 것이다.
1N = 11 -> 1
2N = 22 -> 2
...
9N = 99 -> 9
10N = 110 -> 0
최종적으로 10N일 때 10개의 수를 모두 찾았고, 110을 출력하면 된다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int tc = 1; tc <= t; tc++) {
int n = Integer.parseInt(br.readLine());
HashSet<Integer> hs = new HashSet<>();
int cur = n;
for (int i = 1; i <= 100; i++, cur+=n) {
int tmp = cur;
while (tmp != 0) {
hs.add(tmp%10);
tmp/=10;
}
if (hs.size() == 10)
break;
}
sb.append(String.format("Case #%d: ", tc)).append(hs.size()!=10?"INSOMNIA":cur).append('\n');
}
System.out.print(sb);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
백준 5698 자바 - Tautogram (boj 5698 java) (2) | 2022.03.28 |
---|---|
백준 9342 자바 - 염색체 (boj 9342 java) (0) | 2022.03.28 |
백준 16955 자바 - 오목, 이길 수 있을까? (boj 16955 java) (0) | 2022.03.26 |
백준 20420 자바 - 화살표 미로 (Normal) (BOJ 20420 JAVA) (0) | 2022.03.25 |
백준 13537 자바 - 수열과 쿼리 1 (BOJ 13537 JAVA) (0) | 2022.03.25 |
댓글