[백준] 2877: 4와 7 (Java)

NNIJGNUS·2025년 7월 29일

문제

아이디어

먼저 창영이가 좋아하는 수를 나열해보자.

4, 7, 44, 47, 74, 77, 444, 447, 474, 477, 744, 747, 774, 777, ...

무슨 패턴이 보일 것도 같다. 알아보기 쉽게 4는 0으로, 7은 1로 각각 치환해보자.

0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, ...

0 ~ 2^n 까지의 이진수가 반복되는 걸 확인할 수 있다.

소스코드

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

public class Main {
    static int K;

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

        int exp = 2;
        int temp = 1;
        while (K - exp >= 0) {
            K -= exp;
            exp <<= 1;
            temp++;
        }

        StringBuilder ans = new StringBuilder();
        for (int i = temp - 1; i >= 0; i--) {
            if((K & (1 << i)) == 0)
                ans.append(4);
            else
                ans.append(7);
        }

        System.out.println(ans);
    }
}

채점결과

0개의 댓글