본문 바로가기
Algorithm

[구현/수학] 백준 18005 Even or Odd? - 파이썬(Python)

by jangThang 2022. 8. 5.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    18005번: Even or Odd?

    Output 2 if the sum of any n consecutive integers in the range from 1 to 1018 must be even, 1 if the sum must be odd, or 0 if the sum could be either even or odd.

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     n개의 연속된 자연수를 더했을 때, 짝수인지 홀수인지 판별하는 문제입니다.

     

    1) 홀수부터 n개의 연속된 자연수의 합
    2) 짝수부터 n개의 연속된 자연수의 합

     경우의 수는 2가지입니다. 어차피 짝수판별에 합의 크기는 중요하지 않습니다.

    따라서 '1부터 1+N까지의 합'과 '2부터 2+N까지의 합'을 구해서 짝수 판별을 합니다.

     

     

     

    3. 코드

    # 입력
    n = int(input())
    
    # 합 구하기
    sum1 = n*(n+1)//2  # 1부터 n까지의 합
    sum2 = (n+1)*(n+2)//2-1  # 2부터 n+1까지의 합
    
    # 짝수 판별
    res1 = sum1 % 2
    res2 = sum2 % 2
    
    # 출력
    if res1 == res2 == 0:
        print(2)
    elif res1 == res2 == 1:
        print(1)
    else:
        print(0)

     먼저 연속된 수열의 합을 구합니다. 등차수열의 합 공식을 이용하면, 빠르게 계산할 수 있겠죠? 시간제한이 1초이기 때문에, 등차수열의 합 공식을 사용해서 시간을 아껴줍니다.

     

    n(n+1)/2 = 1부터 n까지의 연속된 자연수의 합

     

    star가 되고나서 Tistory

    반응형

    댓글