본문 바로가기

백준 문풀

[Python] 4와 7 / 2진수로 구현하기

>> 문제

>>입출력 예시

 

in : 1

out : 4

 

in : 2

out : 7

 

in : 3

out : 44

 

 

>>문제 해결에 대한 생각

- 창영이는 4와 7로만 숫자를 구성 => 이진수와 비슷하다고 생각

- 규칙을 찾은 다음 이진수의 0을 4로 / 1을 7로 변환해보자

 

>> 대소관계

 

1         1      |   4          0          

2         10    |   7          1

 

3         11    |  44          00

4        100   |  47          01

5        101   |  74          10

6         110  |  77          11

 

7        111     |  444       000

8        1000  |  447        001

9        1001  |  474        010

10      1010  |  477        011

11      1011   |  744       100     

12      1100   |  747       101    

13      1101   |  774       110  

14      1110   |  777        111  

 

15       1111  |  4444       0000 

16     10000 |  4447       0001

17     10001 |  4474       0010   

18     10010 |  4477       0011

19     10011 |  4744       0100

20     10100 |  4747       0101

 

=> 숫자의 관계를 보면

=> (input+1을 이진수화한 코드) = 4,7을 2진수로 인코딩화 시킨 숫자에서 맨 처음 코드를 제외한 것

 

예를 들어

 

6-> 77(11) 인데 이 값은

7(111)에서 앞의 값 1을 제외한 2진코드 11과 같음

 

15 -> 4444(0000) 인데 이 값은

16 (10000)에서 앞의 값 1을 제외한 2진 코드 0000과 같음

 

따라서

step1. input+1을 이진코드로 바꾸고

step2. 앞의 숫자 1을 제외하고 이진코드 뽑기

step3. 0-> 4 / 1-> 7로 변환

 

 

>> 코드