본문 바로가기
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
    반응형