문제링크
https://www.acmicpc.net/problem/2877
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 |