코딩테스트 (C#)

백준 2753 : 윤년 - C# 풀이

UniCoti-sub 2024. 8. 13.
반응형

문제 사진

이번 문제는 쉽지만 조금 복잡할 수 있습니다.

일단 윤년에 대해서 알아야 하는데, 이 문제에서는 친절히도 윤년의 조건을 설명해줍니다.

 

1. 4의 배수이면서 100의 배수가 아닐 때

2. 400의 배수일 때

이렇게 총 2가지 경우 중 하나를 충족할 때가 윤년입니다. 이 조건을 모두 만족하지 못하는

경우는 윤년이 아니기에 else로 들어가면 됩니다. 따라서 if문의 조건만 나타낼 수 있다면

바로 풀 수 있는 간단한 문제입니다.

 

using System;

namespace unicoti {
    class Program {
        static void Main(string[] args) {
            int input;
            int.TryParse(Console.ReadLine(), out input);

            if((input%4 == 0 && input%100 != 0) || input%400 == 0) {
                Console.WriteLine("1");
            } else {
                Console.WriteLine("0");
            }
        }
    }
}

 

먼저, 입력값을 input이라는 변수를 TryParse 구문을 통해서 안전하게 받아왔고,

(input%4 == 0 && input%100 != 0) 부분은 1번 조건을 코드로 나타낸 결과입니다.

% 기호는 나눈 후 나머지를 의미하기에 4의 배수는 4로 나누었을 때 나머지가 0으로 표현했고,

100의 배수가 아니여야 하는 부분은 !(부정연산자)를 통해서 처리해주었습니다.

 

이후 괄호로 이 조건을 묶은 다음 두번째 조건도 표시해주었습니다.

400의 배수일 조건. input%400 == 0을 통해 2번 조건도 표시했고

이 두 코드를 || (or) 을 통해서 둘 중 하나만 성립해도 되도록 구성했습니다.

 

한개의 if문만 썼기에 이후 else 문으로 나머지 경우를 축약해서

코드 구성을 완료했습니다.


오늘의 느낀점)

일단 이 문제에서 느낀 점은 딱히 없는 것 같습니다. 소괄호로 복잡한 논리 연산을

간단히 표현한 것과 윤년의 의미를 알게 된 정도의 수확이 있지 않아 싶습니다.

또한 한글자를 출력할때 숫자여서 char형을 사용해도 될지 망설였는데,

직접 실행해보니 숫자도 char형으로 만들 수 있다는 걸 확실히 알게 되었습니다.

물론 이런 정보들은 그때그때 알아도 상관없지만, 디테일이 올라간 것 같아 기분 좋습니다.


이상으로 도움이 되었길 바라며,

 

끝.

반응형

댓글