728x90
반응형
안녕하세요. 지난 포스팅의 BOJ 9498번 : 시험 성적에서는 조건문의 성질을 적용해서 더 간단하게 코드를 짜는 방법에 대해서 알아보았습니다. 오늘은 더욱 복잡한 조건이 들어간 문제를 풀어보도록 하겠습니다.
핵심 포인트
- 조건문
- 논리연산자 and 와 or
오늘의 핵심은 논리연산자 and와 or을 이해하는 것입니다.
- and 연산자 : 두 개의 불(bool) 자료형(True 또는 False 만을 가지는 자료형)이 모두 True 일 때 True를 반환하는 연산입니다.
- or 연산자 : 두 개의 불(bool) 자료형(True 또는 False 만을 가지는 자료형) 중 하나가 True 일 때 True를 반환하는 연산입니다.
이제 문제를 보도록 하죠. 윤년의 조건은 2가지입니다.
- 연도가 4의 배수이면서 100의 배수가 아닐 때
- 연도가 400의 배수일 때
따라서, 2가지 조건 중 하나만 만족하면 윤년이므로 or 연산자를 통해 묶어줄 수 있습니다. 그리고 첫번째 조건은 4의 배수이면서 100의 배수가 아니여야하기 때문에 and 연산자를 통해 묶어줄 수 있습니다. 그러므로 아래와 같이 쓸 수 있겠죠?
if (연도가 4의 배수 and 연도가 100의 배수가 아님) or 연도가 400의 배수 :
해당 연도는 윤년
else :
해당 연도는 윤년이 아님
이제 나머지는 해당 연도가 4의 배수, 100의 배수, 400의 배수인지 확인하면 됩니다. 이는 파이썬 기본 사칙연산인 나머지 연산(%)을 했을 때 0이 나온다면 해당 수의 배수이고 0이 아니면 해당 수의 배수가 아닙니다. 따라서 아래와 같이 문제를 풀 수 있습니다.
year = int(input())
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 :
print(1)
else :
print(0)
참고자료 및 그림출처
728x90
반응형
'Programming > Coding Problem' 카테고리의 다른 글
BOJ 2884번 : 알람 시계 (0) | 2022.06.01 |
---|---|
BOJ 14681번 : 사분면 고르기 (0) | 2022.06.01 |
BOJ 9498번 : 시험 성적 (0) | 2022.05.31 |
BOJ 1330번 : 두 수 비교하기 (0) | 2022.05.31 |
BOJ 2588번 : 곱셈 (0) | 2022.05.31 |