문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18_yw6I9MCFAZN

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

접근 방법

// [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

+ Recent posts