알고리즘 문제 풀이

14. C++ 백준 2754 번 윤년. feat.비교 연산자. || , &&, and, or

코딩하는 덕구 🐶 2022. 1. 16. 15:48
728x90
반응형

안녕하세요 코딩하는 강아지 덕구입니다!

C++ 백준 2754 번 입니다!

https://www.acmicpc.net/problem/2753

 

2753번: 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서

www.acmicpc.net

문제

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.

윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.

예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

아래는 답 입니다!

#include<iostream>
using namespace std;
int main(){
    int A;
    cin>>A;
    if(A%4 == 0 && A%100 !=0 || A%400 == 0) cout<<1; 
    else cout<<0;

    return 0;
}

&&연산자와 || 연산자를 알아야 됩니다!

&&연산자는 조건문 && 조건문의 형식이며 (and 연산자라고 읽습니다!)

두 조건이 참일때 1을 반환합니다!(참을 반환). 프로그래밍에서 1은 참을 뜻 합니다!

둘중 하나라도 거짓이면 0을 반환합니다!(거짓을 반환). 프로그래밍에서 0은 거짓을 뜻 합니다!

 

|| 연산자는 조건문 || 조건문의 형식이며 (or 연산자라고 읽습니다.)

둘중 한 조건만 참이여도 (둘다 참이여도 됨) 1을 반환합니다!

둘다 거짓이면 0을 반환하죠!

 

이와같이 비교해서 참 거짓을 나타내는 연산자를 비교 연산자라고 합니다!

문제에서 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때라고 말했음으로

4의 배수인지 확인하는 조건문 &&   100의 배수가 아닌지 확인하는 조건문 || 400의 배수인지 확인하는 조건문

3개의 조건을 &&, ||를 이용해 연산하고 참이면 1, 거짓이면 0 으로 출력하면 됩니다!

 

1. 어떤 숫자가 4의 배수인지 확인하려면 4로 나눴을때 0이 나오면 되므로 숫자 % 4 == 0 

(== 비교 연산자중 하나입니다. 조건문 == 조건문 형식이며 양쪽이 같으면 1 다르면 0을 반환합니다.) 

 

2. 100의 배수가 아닌지 확인하려면 숫자를 100으로 나누고 나머지가 0이 아니면 됩니다!

(! 는 not 을 뜻 합니다! 부정하는데 쓰입니다!)

조건문 != 조건문 은 양쪽이 같으면 0, 다르면 1을 반환한다.

 

3. 400의 배수인지 확인하려면 마찬가지로 400으로 나누고 0이 나오는지 확인하면 됩니다!

숫자 %400 == 0

 

4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수인 숫자의 조건은

(A%4 == 0 && A%100 !=0 || A%400 == 0) 이렇게 됩니다!

 

이상 C++ 백준 2754 번 이었습니다!

감사합니다!

728x90
반응형