백준 - 이진수 변환[10829]

최대 1 분 소요

이번 포스팅에서는 백준 알고리즘의 이진수 변환[10829] 코딩테스트 연습 문제를 풀어봅니다.

문제 설명

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

입력

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000)

출력

N을 이진수로 바꿔서 출력한다. 이진수는 0으로 시작하면 안 된다.

입출력 예

입력출력
53110101

문제 풀이

사실 문제 풀이만 놓고 본다면 파이썬으로는 bin()함수만 이용하면 정말 쉽게 풀리는 문제입니다.

print(bin(53)[2:])

110101

하지만 bin()함수를 사용하지 않고 재귀함수를 사용하여 문제를 풀어 보겠습니다. 코드는 아래와 같습니다.

def binary(input):
    if input <= 1:
        return str(input)
    else:
        return binary(input // 2) + str(input % 2)

print(binary(53))

110101

if else 문을 3항 연산자를 이용하여 표현하면 아래와 같이도 표현 가능합니다.

def binary(input):
    return str(input) if input <= 1 else binary(input // 2) + str(input % 2)
print(binary(53))

110101

최종적으로 lambda를 사용하면 한줄 코드도 가능 합니다.

binary = lambda input: (str(input) if input <= 1 else binary(input // 2) + str(input % 2))
print(binary(53))

110101

백준 문제에 맞게 입력을 받아서 처리하도록 수정 합니다.

binary = lambda input: (str(input) if input <= 1 else binary(input // 2) + str(input % 2))
print(binary(int(input())))

결과는 아래와 같이 잘 통과 되는 것을 확인 할 수 있습니다.

1