문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18_yw6I9MCFAZN
접근 방법
// [SWEA] 1288. 새로운 불면증 치료법
import java.util.*;
import java.io.*;
// public
class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 테스트 케이스의 수
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
int N = Integer.parseInt(br.readLine());
// k번째에 센 양의 횟수
int accNum = 0;
// 비트연산을 통해 각 숫자가 저장되었는지를 확인할 수 있는 변수
int numCnt = 0;
// 0 ~ 9까지 모든 숫자를 탐색하였다면 numCnt는 1111111111(2)로, 1023이 될 것이다.
// 즉 numCnt 값이 1023이 될 때까지 반복
while (numCnt < 1023) {
// accNum에 N을 더함.
accNum += N;
// curNum에 현재 누적값 추가
int curNum = accNum;
// 각 자리수를 순회하며
while (curNum > 0) {
// 해당 자리수의 숫자에 해당하는 비트 위치와 numCnt를 OR 연산시킨다.
numCnt = numCnt | (1 << (curNum % 10));
curNum /= 10;
}
}
// 0 ~ 9까지의 모든 숫자가 나왔을 때의 accNum을 출력한다.
sb.append("#").append(tc).append(" ").append(accNum).append("\n");
}
System.out.println(sb);
}
}
'Algorithm' 카테고리의 다른 글
[SWEA] 1230. 암호문3 (1) | 2024.01.29 |
---|---|
[SWEA] 10726. 이진수 표현 (0) | 2024.01.29 |
[LeetCode] 2667. Create Hello World Function (0) | 2024.01.29 |
[LeetCode] 2666. Allow One Function Call (0) | 2024.01.26 |
[LeetCode] 2665. Counter II (0) | 2024.01.25 |