문제

자연수 N이 주어진다. N을 이진수로 바꿔서 출력하는 프로그램을 작성하시오.

 

 

n = int(input())
arr = []

def binary(n):
    if n == 1:
        arr.append(1)    # n=1 이면 이진수 변환값은 1
    elif n  == 2:
        arr.append(0)
        arr.append(1)    #n=2이면 이진수 변환값은 10인데 pop하기위해 01로 저장
    else:
        arr.append(n%2)  #n%2를 먼저 저장하고 
        binary(n//2)     #다시 함수 호출(재귀함수 사용)

binary(n)

for _ in range(len(arr)):
    print(arr.pop(), end='')   #pop해서 배열 순서 뒤집기

 

파이썬에는 bin함수가 있지만 재귀함수를 이용해서 푸는 것이 문제의 포인트였던 것 같아 알고리즘을 구현했다. n이 3 이상의 수라면 재귀함수를 이용하여 나머지들을 리스트에 저장하게끔 하였고 n이 2이하라면 직접 이진수값을 배열에 입력하는 식으로 구현했다.

조금 더 한줄 쓰기에 접근하려면 2이하의 수들도 if문 하나로 짤 수 있었겠지만 머리쓰기가 귀찮았다...ㅎ

 

그리고 배열들을 역순배치를 할까 하다가 역순->int->join 으로 하면 코드가 길어질 것 같아 pop을 이용할 수 있다는 방법을 적용해보았다!!!

재귀함수 아직도 어렵네

'Algorithm' 카테고리의 다른 글

programmers #정수삼각형  (0) 2021.08.22
백준 15829번 #Hashing  (0) 2021.08.22
programmers #[1차] 비밀지도  (0) 2021.08.19
백준 5692번 #팩토리얼 진법  (0) 2021.08.17
백준 10872 #팩토리얼  (0) 2021.08.17

+ Recent posts