[BaekJoon/백준] 2단계 "if문"

Hevton·2020년 8월 29일
0

오늘은 "단계별로 풀어보기" 2단계를 풀어보았다. 이에 해당하는 문제들은 1330번, 9498번, 2753번, 14681번, 2884번이다.
짚고 넘어가야 할 문제가 있다면 2753번이었다. 솔직히 문제 자체의 난이도는 어렵지 않아도 문제에 대한 이해도가 부족해서 힘들었다.
윤년을 구하라는 문제였는데, 이 윤년의 조건에 대해서 이해가 안되어서 애를 먹었다.

내가 이해력이 부족한 탓에 문제를 이해 못했지만 나처럼 힘들어 할 수도 있는 다른 사람들을 위해서 문제를 자세히 풀어보자면,

  1. 어떤 년도가 있을때 이 년도가 4로 나누어 지면 윤년의 조건이 될 수 있다.
    4로 나누어진다고 해서 무조건 윤년이라는 게 아니라, 윤년이 될 수 있는 조건 1단계를 갖춘 것이다.
  2. 4로 나누어 떨어지는 년도가 100으로도 나누어 떨어지지 않는다면 윤년이다.
    4로 나누어 떨어지며, 동시에 100으로 나누어 떨어지지 않는다면 윤년인 것이다.
  3. 4로 나누어 떨어지는 년도가 100으로 나누어 떨어지는 경우, 400으로도 나누어 떨어진다면 윤년이다.
    4로 나누어 떨어지며, 동시에 100으로 나누어 떨어진다 해도 무조건 윤년이 아닌 게 아니라, 이 년도가 만약 400으로 나누어 떨어진다면 윤년이다.

이처럼 풀어서 정리해도, 조건도 까다롭고 복잡하고 어지러워서 헷갈려했다. 코드로 보자면

#include <iostream>
using namespace std;
int main()
{
    int key;
    cin >> key;
    
    if(key%4==0)
    {
        if(key%100==0)
        {
            if(key%400==0)
                cout << 1 << endl;
            else
                cout << 0 << endl;
        }
        else
            cout << 1 << endl;
    }
    else
        cout << 0 << endl;
    
    return 0;
}

더 간단하게 짜는 방법도 있겠지만, 조건 하나하나마다 이해하기에는 위 코드가 가장 나을 것 같다.

profile
놀만큼 놀았다.

0개의 댓글