1288 새로운 불면증 치료법 (D2)
양을 세면서 0에서 9까지의 모든 숫자를 보는 것은 최소 몇 번 양을 센 시점일까?
생각한 방법
Q) 반복문이 몇개나 필요해 ?
- 전체 Testcase반복
- 곱셈에서 0~9까지 나올 때 까지 반복
- 현재본 숫자 계산 -> 반복적으로 10 나누기
2번의 경우 0~9까지 나올 때가지 반복해주기 위해서는 input, 즉 계산을 해줄 값을 변경해줘야 하는데. input값이 변함에 따라 출력값이 변하는 방식이므로 함수로 만들어야 한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static boolean []data = new boolean[10];
public static int i;
public static void func(int input) {
// 입력받은 수 data에 넣기
boolean flag = true;
while (flag) {
if (input < 10) {
int number = input;
for (i = 0; i < 10; i++) {
if (i == number) {
data[i] = true;
}
}
flag = false;
} else {
int number = input % 10;
for (i = 0; i < 10; i++) {
if (i == number) {
data[i] = true;
}
}
input = input / 10;
}
}
}
public static void main(String args[]) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(bf.readLine());
// 값 담기
int test_case = 1;
while(T-- > 0 ) {
int input = Integer.parseInt(bf.readLine());
boolean flag = true;
data = new boolean[10];
int t = 1;
while(flag) {
int total = input *t;
func(total);
if(data[0] == true &&
data[1] == true &&
data[2] == true &&
data[3] == true &&
data[4] == true &&
data[5] == true &&
data[6] == true &&
data[7] == true &&
data[8] == true &&
data[9] == true
) {
flag =false;
}
t++;
}
System.out.print("#" + test_case + " ");
System.out.println(input * (t-1));
test_case++;
}
};
}
참고자료
SWE