백준 - 팩토리얼[10872]
이번 포스팅에서는 백준 알고리즘의 팩토리얼[10872] 코딩테스트 연습 문제를 풀어봅니다.
문제 설명
자연수 N이 주어진다. N을 이진수로 바꿔서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000)
출력
N을 이진수로 바꿔서 출력한다. 이진수는 0으로 시작하면 안 된다.
입출력 예
입력 | 출력 |
---|---|
10 | 3628800 |
0 | 1 |
문제 풀이
파이썬으로는 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())))
결과는 아래와 같이 잘 통과 되는 것을 확인 할 수 있습니다.