최코딩의 개발

[백준 2877번] 4와 7 본문

코딩테스트/백준

[백준 2877번] 4와 7

seung_ho_choi.s 2025. 3. 19. 23:51
728x90

https://www.acmicpc.net/problem/2877

 

수정 전

import java.io.*;
import java.util.*;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int K = Integer.parseInt(br.readLine());

        Queue<String> queue = new LinkedList<>();

        queue.add("4");
        queue.add("7");
        int count = 0;
        while (!queue.isEmpty()) {
            String current = queue.poll();
            count++;
            if (count == K) {
                System.out.println(current);
                break;
            }

            queue.add(current + "4");
            queue.add(current + "7");

        }
    }
}

수정 후

package implement;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Impl2877 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int K= Integer.parseInt(br.readLine());

        K= K+1;
        StringBuilder sb =new StringBuilder();
        while(K !=0){
            int number = K % 2;
            sb.append(number);
            K/=2;
        }

        System.out.println(sb.toString());

        StringBuilder result = new StringBuilder();
        for(int i= sb.toString().length()-2; i>=0; i--){
            if(sb.charAt(i) == '0'){
                result.append("4");
            }else{
                result.append("7");
            }
        }
        System.out.println(result.toString());
    }
}

 

 

이 문제의 핵심은 이진수다!! 4와 7을 각각 0과 1로 치환하고 표를 그리자면 

 

위와 같은 방식으로 풀면 된다. 즉, K를 1로 가정하고 값에 1을 더하면 2, 이를 이진수로 표현하면 10이 된다. 하지만 변환 과정에서 숫자가 거꾸로 저장되므로 실제로는 01이 된다. 여기서 뒷자리 1은 필요 없으므로 제외하고, 남은 0을 4로 치환하면 정답이 나온다!

오늘 OO 코테에서 이와 비슷한 문제가 나와서 풀어봤는데, 진짜 어렵더라 ㅋㅋㅋ. 코테는 역시 쉽지 않네... 😵‍💫

728x90

'코딩테스트 > 백준' 카테고리의 다른 글

[백준 15666번] 로봇 조종하기  (0) 2025.03.24
[백준 15666번] N과 M(12)  (0) 2025.03.23
[백준 17070번] 파이프 옮기기 1  (0) 2025.03.18
[백준 12865번] 평범한 배낭  (1) 2025.02.28
[백준 9251번] LCS  (1) 2025.02.27