윤년
문제는 다음과 같습니다.
요약하자면, 문제의 조건에 알맞게 윤년이면 1을 아니면 0을 출력하는 프로그램을 작성하는 것 입니다.
윤년은 연도가 4의 배수이면서 100의 배수가 아니거나 400의 배수 일 때입니다. 따라서 이 조건에 맞게 조건문을 작성하시면 됩니다. 입력의 조건은 zero divison Error 를 방지하기 위해 1보다 크거나 같고, 4000보다 작거나 같은 자연수로 제한되어있습니다.
저의 해답 코드는 다음과 같습니다.
year = int(input())
if (year%4==0) and (year%100 !=0 or year%400==0):
print(1)
else:
print(0)
이 문제의 키 포인트는 연산자 우선순위의 개념이라고 생각합니다.
( ) 처리하는 것이 중요하다고 생각합니다. and 와 or을 혼용해서 사용 할 때 꼭 ( ) 우선순위를 처리하셔야 합니다.
연산자 우선순위에 대한 내용은 아래 게시글을 확인하시길 바랍니다.
단계별로 풀어보기 백준_10430번 | 연산자 운선수위 | — doogdong_JH
단계별로 풀어보기 백준_10430번 | 연산자 운선수위 |
연산자 우선순위 이전 게시글에서는 단순하게 식을 코드로 적기만 하면 답을 맞출 수 있는 코드였습니다. 하지만 시각을 더 넓혀서 보면 이 문제는 결국 연산자 운선순위에 대해 더욱 깊게 스
edu-data.tistory.com
이번 문제의 정답 비율은 다음과 같습니다.
생각보대 정답 비율이 높지 않다고 생각합니다. 아마 () 처리를 잘 못 하여 많은 사람들이 틀렸을 것이라고 생각했지만, 다른 사람들의 풀이를 보고 보통의 사람들이 조건 설정 자체를 잘못한 사람이 많았습니다.
다음은 공개된 다른 사람의 오답 코드입니다.
이런 형식의 코드가 매우 많았습니다. 이 코드는 4의 배수기만 하면 모두 윤년으로 처리하게 됩니다. 따라서 잘못된 기대값을 출력할 수 있습니다.
또 다른 공개된 다른 사람의 오답 코드입니다.
예상했던 대로 ( ) 처리를 올바르게 하지 않았습니다. and가 가장 밖에 있어야 하며 먼저 or 구문을 처리 해야 합니다.
아직 혼용이 있으신 분들은 위에 레퍼런스 한 게시글에서 연산자 우선순위에 대해 알아보시는 것을 추천합니다
'BaekJoon Reivew' 카테고리의 다른 글
단계별로 풀어보기 백준_2884번 (0) | 2025.02.05 |
---|---|
단계별로 풀어보기 백준_14681번 (0) | 2025.02.05 |
단계별로 풀어보기 백준_9498번 (0) | 2025.02.03 |
단계별로 풀어보기 백준_1330번 (1) | 2025.02.03 |
단계별로 풀어보기 백준_10172번 (0) | 2025.02.03 |