2877번: 4와 7
창영이는 4와 7로 이루어진 수를 좋아한다. 창영이가 좋아하는 수 중에 K번째 작은 수를 구해 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제
창영이는 4와 7로 이루어진 수를 좋아한다. 창영이가 좋아하는 수 중에 K번째 작은 수를 구해 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 K(1 ≤ K ≤ 109)가 주어진다.
출력
첫째 줄에 창영이가 좋아하는 숫자 중 K번째 작은 수를 출력한다.
코드
bin_k = bin(int(input())+1)
ans = ''
for i in bin_k[3:]:
if i == '0':
ans += '4'
else:
ans += '7'
print(ans)
숫자가 2개라는 점에서 이진수로 변환해서 풀면 되겠다는 힌트를 얻었다.
이렇게 하나씩 써보니 규칙이 보였다.
입력받은 수+1을 이진수로 변환하여 맨 앞자리를 제외하고 보면 규칙을 찾을 수 있었다. k+1을 이진수로 치환한 수에서 0을 4, 1을 7로 치환하면 창영이가 k번째로 좋아하는 수이다.
다 풀고 다른 사람들의 풀이를 찾아보니 format과 replace 함수를 써서 간결하게 코딩한 코드도 있었다.
k = format(int(input())+1, 'b')
print(k[1:].replace('0', '4').replace('1', '7'))
format(숫자, 'b')를 하면 접두어 '0b'가 빠진 이진수 문자열을 바로 얻을 수 있다.
'문제풀이 > 구현' 카테고리의 다른 글
[Python/파이썬] 백준 17135번 캐슬 디펜스 (0) | 2023.06.25 |
---|---|
[Python/파이썬] 백준 22860번 폴더 정리 (small) (0) | 2023.06.15 |
[Python/파이썬] 백준 20164번 홀수 홀릭 호석 (0) | 2023.05.26 |
[Python/파이썬] 백준 20207번 달력 (0) | 2023.05.26 |
[Python/파이썬] 백준 16235번 나무 재테크 (0) | 2023.04.29 |