문제

https://leetcode.com/problems/gcd-of-odd-and-even-sums

풀이

인티저 n이 하나 주어지고 작은 짝수 n개, 가장 홀수 n개를 각각 모두 더한 합 간의 GCD를 구하는 문제이다.

문제에서 요구하는 내용이 너무 간단해서, gcd()를 쓰지 않고, 유클리드 호제법을 직접 작성해서 GCD를 구했다.

코드

class Solution {
public:
    int gcdOfOddEvenSums(int n) {
        int sumOdd = 0;
        int sumEven = 0;
        for (int num = 1; num <= n * 2; num++) {
            if (num % 2 == 0) sumEven += num;
            else if (num % 2 != 0) sumOdd += num;
        }
        while(sumEven) {
            sumOdd %= sumEven;
            swap(sumOdd, sumEven);
        }
        return sumOdd;
    }
};