본문 바로가기
알고리즘/백준

[JAVA]백준_2877_4와7

by 박 현 황 2021. 5. 3.

문제링크

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

 

2877번: 4와 7

창영이는 4와 7로 이루어진 수를 좋아한다. 창영이가 좋아하는 수 중에 K번째 작은 수를 구해 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

 

package BOJ;

import java.util.Scanner;

public class Main_2877 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int K = sc.nextInt(); //몇번째로 큰 수 인지지
        K = K+1;
        StringBuilder sb = new StringBuilder();

        int num = 0;
        while(K!=0){
            num = K%2;
            sb.append(num);
            K = K/2;
        }
        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 (0)

7 (1)

 

44 (00)

47 (01)

74 (10)

77 (11)

 

444

447

474

477

744

747

774

777

 

...

 

이렇게 적어보니 규칙이 있었다.

0,1대신 4와7로 이진수를 나타내는 것이다. 

 

K+1해서 이진수를 구한 뒤 맨 끝자리 수(StringBuilder에서)를 빼고 다시 4와 7로 교환하여 주면 된다.

'알고리즘 > 백준' 카테고리의 다른 글

[JAVA]백준_8972_미친 아두이노  (0) 2021.06.08
[JAVA]백준_6118_숨바꼭질  (0) 2021.06.01
[JAVA]백준_2846_오르막길  (0) 2021.05.03
[JAVA]백준_2075_N번째 큰 수  (0) 2021.04.27
[JAVA]백준_2660_회장뽑기  (0) 2021.04.22