[SWEA] 1288. 새로운 불면증 치료법
문제
현재 각 자리수의 수를 체크해서 0 ~ 9 까지 모두 체크되면 종료시켜야한다. 비트 연산을 활용해 0000000000 에서 시작해서 1111111111 가 되면 종료한다.
실수
코드
import java.util.Scanner;
import java.io.FileInputStream;
class Solution
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T;
T = sc.nextInt();
int numbers, N, n;
for (int test_case = 1; test_case <= T; test_case++) {
numbers = 0B0000000000;
N = sc.nextInt();
n = N;
numbers = checkBit(numbers, n);
while (true) {
if ((numbers & 0B1111111111) == 0B1111111111) {
break;
} // numbers == 1111111111
n += N;
numbers = checkBit(numbers, n);
}
System.out.println("#" + test_case + " " + n);
}
}
private static int checkBit(int numbers, int N) {
String strN = Integer.toString(N);
for (int i = 0; i < strN.length(); i++) {
int a = (1 << (strN.charAt(i) - '0'));
numbers = numbers | a; // 현재 자리 수 추가하기, 0 표현을 위해 + 1
}
return numbers;
}
}
댓글남기기