목차
728x90
반응형
Summary
무료 지난 게시물에 이어서 goorm 코딩 테스트 '기초 - 큰 팩토리얼' 문제를 풀어봅시다.
뭔가 지난번 문제가 생각보다 어려워서 당황했었는데 이번 문제는 어떨지 함께 확인해봅시다.
1. 풀이
우선 문제는 중학교 쯤(?) 배웠던 팩토리얼을 계산하는 문제네요.
입력값은 1 ~ 10만 이하의 정수네요. 정수...겠죠?
문제에는 입력값 N이 정수라는 말은 없는데 팩토리얼이 1부터 N까지 +1씩 해서 곱해지는 걸 의미하는 거니깐요?
그렇다면 N을 입력 받아 정수로 형변환 시켜주고 for문으로 1부터 N까지 1씩 증가시키면서 곱한 값을 출력하면 되겠군요.
출력값이 너무 크면 안되니까 결과값을 1,000,000,007 으로 나눈 나머지를 출력하라고 하네요.
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
n = int(input())
sum = 1
for i in range(1,n+1):
sum *= i
print(sum%1000000007)
2. 잡담
위 코드를 제출하여 정답은 맞았는데 문득 궁금한게 생기네요.
실행 결과가 이렇게 나오는데 과연 나머지를 구하는 mod 연산자인 '%' 가 있을 때
1,000,000,007 보다 작은 숫자, 예를 들어 1,000,000,006 이라는 결과값에 나누기 연산을 한 뒤 나머지를 출력하는 것과
sum(결과값)이 1,000,000,007 이라는 숫자와 대소비교를 한 뒤 크면 나누고 작으면 그냥 print 하는 방법이
과연 실행시간 / CPU 사용에 차이가 있을지 궁금져서요.
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
n = int(input())
sum = 1
for i in range(1,n+1):
sum *= i
# print(sum%1000000007)
if sum >= 1000000007:
print(sum%1000000007)
else:
print(sum)
두둥 탁!!
뭐 몇번 돌려봤는데 큰 차이는 없네요.. 하하하
그럼 다음 문제 풀이로 돌아오겠습니다.
728x90
반응형
'Python > 코딩테스트(구름)' 카테고리의 다른 글
(Python) goorm 코딩테스트 (기초 - 8진수 계산기) (0) | 2024.09.20 |
---|---|
(Python) goorm 코딩테스트 (기초 - 정수의 길이) (1) | 2024.09.20 |
(Python) goorm 코딩테스트 (기초 - 대소문자 바꾸기) (0) | 2024.01.16 |
(Python) goorm 코딩테스트 (기초 - A+B) (0) | 2024.01.16 |
(Python) goorm 코딩테스트 (기초 - 숫자 제거 배열) (0) | 2023.12.14 |