백준/2. 조건문

[2753] 윤년

lfgwy 2022. 7. 15. 16:43

단계별로 풀어보기 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