본문 바로가기

학부/코딩테스트 준비

백준 (단계별 풀어보기 2단계) 2753 문제, 파이썬

728x90
반응형


나의 풀이


 

# 오답인 답변

x = int(input())

if x%4==0 & x%100!=0 | x%400==0:
  print(1)
else:
  print(0)

계속 |를 사용해서 접근하다보니, 에러가 지속적으로 발생했었다.

  • 즉, 둘 중 하나 이상이 1이면 1이 된다는 뜻.
    • 여기서 or 대신 | 를 넣고 2000을 대입하면, 0이 나오는데, 이는 x%4와 x%100과 x%400이 모두 다른 식으로 인식되기 때문이다.
    • x%400이 true라서 x%100 | x%400 ⇒ 1이 되어도, x%4는 0이 아니므로 & 연산자에 의해 false로 판별한다.
x = int(input())

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

이렇게 수정하면 된다. 여기서 비트 연산자를 사용하지 않은 이유는, 2012와 같은 경우에서 계속 잘못된 답이 나오는데 이는 비트 연산자의 연산 방식에 있어서 true, false가 다르게 나오기 때문이다.

 

 

728x90
반응형