728x90

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의 배수이기 때문에 윤년이다.

풀이)

풀이1)

year=int(input())
if((year%4==0)and(year%100!=0)):
    print(1)
elif((year%4==0)and(year%400==0)):
    print(1)
else:
    print(0)

더 깔끔하게 정리하면,

year=int(input())
if((year%4==0)and(year%100!=0)):
    print(1)
elif(year%400==0):
    print(1)
else:
    print(0)

if문의 해당되는 조건은 4의 배수이면서 100의 배수가 아닐때의 조건

elif문의 조건으로는 4의 배수이면서 400의 배수인것을 찾는것

그밖의 값은 else로 처리 해주는 방식과

풀이2)

year=int(input())
if(((year%4==0)and(year%100!=0))or(year%400==0)):
    print(1)
else:
    print(0)

if문에 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때를 논리연산자로 묶어서 한번에 사용하는 방법이 있다.

 

논리연산자

연산자 의미 설명
and 그리고 두 개의 연산자가 모두 참일 경우에만 True를 출력하고, 그 외의 경우에는 모두 False를 출력한다.
or 또는 두 개의 연산자 중에서 하나라도 참이면 True를 출력하고, 두개가 모두 거짓일때만 False를 출력한다.
not 아니다 볼을 반대로 전환한다.

and 연산자

좌변 우변 결과
True True True
True False False
False True False
False False False

or 연산자

좌변 우변 결과
True True True
True False True
False True True
False False False

not 연산자

>>>print(not True)

False

 

비교연산자

연산자 설명
>= 크거나 같다
<= 작거나 같다
> 크다
< 작다
!= 다르다
== 같다

 

728x90