단계별로 풀어보기 2단계 조건문의 3번 문제입니다.
https://www.acmicpc.net/problem/2753
2753번: 윤년
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서
www.acmicpc.net
and, or이 아닌 &, |을 사용하니 틀렸다고 나왔습니다.
Python에서 and, or은 우리가 흔히 아는 논리연산자로 쓰이지만, &, |의 경우 비트연산자이기 때문에 두 수를 이진수로 변환 후, &의 경우 동일한 위치의 bit가 1인 것들만 1로 계산한다고 합니다. |는 해당 위치의 bit가 하나라도 1일 경우 1로 계산합니다.
예를 들면 이런 겁니다.
9 (00001001)
1 (00000001)
9 & 3 = 1(00000001)
9 | 3 = 9(00001001)
비트연산자와 논리연산자를 헷갈리지 않도록 주의해야할 것 같습니다.
year = int(input())
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print("1")
else:
print("0")
'백준 > 2. 조건문' 카테고리의 다른 글
[2525] 오븐 시계 (0) | 2022.07.15 |
---|---|
[2884] 알람 시계 (0) | 2022.07.15 |
[14681] 사분면 고르기 (0) | 2022.07.15 |
[9498] 시험 성적 (0) | 2022.07.15 |
[1330] 두 수 비교하기 (0) | 2022.07.15 |