코딩테스트/[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:])