[Python] 백준 2877 4와 7 (구현)
📌 문제
창영이는 4와 7로 이루어진 수를 좋아한다. 창영이가 좋아하는 수 중에 K번째 작은 수를 구해 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 K(1 ≤ K ≤ 109)가 주어진다.
출력
첫째 줄에 창영이가 좋아하는 숫자 중 K번째 작은 수를 출력한다.
예제 입력 1
1
예제 출력 1
4
예제 입력 2
2
예제 출력 2
7
예제 입력 3
3
예제 출력 3
44
📌 풀이
💬 Code
n = int(input())
s = format(n+1, 'b')
s = s[1:]
print(s.replace('0', '4').replace('1', '7'))
💡 Solution
규칙을 찾는 게 관건이었던 문제. n번째를 나타내는 n을 먼저 이진수로 바꾸고, n번째 수를 4는 0으로, 7은 1로 바꿔보면 규칙이 보인다. n의 가장 앞자리를 생략하면 n-1번째 수가 된다.
따라서 n번째 수를 찾으려면 n+1을 이진수로 바꾸고 가장 앞자리를 절삭한 후 0과 1을 다시 4와 7로 바꿔주면 된다.
format으로 진수 변환
format() 내장 함수를 이용하면 숫자를 다른 진수의 문자열로 바꿀 때 접두어(0b, 0o, ox 등)를 제외할 수 있다.
>>> format(42, 'b') # 2진수
'101010'
>>> format(42, 'o') # 8진수
'52'
>>> format(42, 'x') # 16진수
'2a'
Author And Source
이 문제에 관하여([Python] 백준 2877 4와 7 (구현)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hygge/Python-백준-2877-4와-7-구현저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)