백준 - 팩토리얼[10872]

최대 1 분 소요

이번 포스팅에서는 백준 알고리즘의 팩토리얼[10872] 코딩테스트 연습 문제를 풀어봅니다.

문제 설명

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

입력

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

출력

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

입출력 예

입력출력
103628800
01

문제 풀이

파이썬으로는 math 패키지에 팩토리얼이 이미 구현되어 있어서 math.factorial()함수만 이용하면 쉽게 풀리는 문제입니다.

import math
print(math.factorial(5))

120

하지만 재귀함수를 이용하여 팩토리얼 함수를 구현하면 아래와 같습니다.

def factorial(input):
    if input == 0:
        return 1
    else:
        return input * factorial(input-1)
print(factorial(10))

3628800

3항 연산자와 lambda를 이용하여 1줄 연산으로 바꿔 보겠습니다.

factorial = lambda input: (1 if input == 0 else input * factorial(input-1))   
print(factorial(10))

3628800

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

factorial = lambda input: (1 if input == 0 else input * factorial(input-1))   
print(factorial(int(input())))

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

1