본문 바로가기
Python/코딩테스트(구름)

(Python) goorm 코딩테스트 (기초 - 큰 팩토리얼)

by 미니몬 2023. 12. 21.
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
반응형