코딩테스트/[BOJ] 문제 풀이
백준 10829 이진수 변환
_JAEJAE_
2021. 8. 26. 13:55
https://www.acmicpc.net/problem/10829
10829번: 이진수 변환
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000)
www.acmicpc.net
문제
자연수 N이 주어진다. N을 이진수로 바꿔서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000)
출력
N을 이진수로 바꿔서 출력한다. 이진수는 0으로 시작하면 안 된다.
예제 입력 1
53
예제 출력 1
110101
[풀이 과정]
1. int형으로 값을 입력 받고 get_binary함수를 실행한다.
2. get_binary(x)
- 함수를 진행하면서 나올 수 있는 조건은 4가지이다.
1) x가 0일 때
2) x가 1일 때
3) x를 2로 나눈 나머지가 0일 때
4) x를 2로 나눈 나머지가 1일 때
- 1, 2의 경우에는 더이상 재귀함수를 호출하지 않고 x값 문자열로 반환하면 된다.
- 3, 4의 경우에는 x가 더 나눠질 수 있기 때문에 x를 2로 나눈 몫을 가지고 한번 더 재귀함수를 실행하고 그 결과값에 x의 나머지를 문자열로 합쳐서 반환하면 된다.
파이썬에는 bin(), oct(), hex() 등 10진수를 다른 진수로 바꿔주는 내장함수를 제공한다.
bin(53)의 경우 0b110101을 반환하므로 슬라이싱을 사용해서 앞에 두 문자는 생략하면 된다.
[소스 코드]
<재귀 함수 사용>
def get_binary(x):
if x == 0: return '0'
elif x == 1 : return '1'
elif x % 2 == 0: return get_binary(x//2) + '0'
elif x % 2 == 1: return get_binary(x//2) + '1'
n = int(input())
print(get_binary(n))
<bin 함수 사용>
n = int(input())
print(bin(n)[2:])