본문 바로가기
파이썬/BOJ_조건문

[백준 2753 파이썬] 윤년 - 조건문 (if, else 중첩 feat. 인셉션)

by 쉽게사는방법 2022. 12. 26.
반응형

[백준 2753 파이썬] 윤년 - 조건문 (if, else 중첩 feat. 인셉션)

 

안녕하세요.

이번 문제는 '윤년'을 판별하는 문제입니다. 윤년은 4년마다 돌아오는 2월이 29일까지 있는 연도죠? 그런데 100의 배수 년도는 안되고 예외적으로 400의 배수 년도는 해당하는 복잡한 규칙이 있었네요!

 

이렇게 무슨경우 - 이런경우 - 저런경우가 중첩되는경우, 이제부터는 영화 '인셉션'을 떠올려주세요. 꿈 속의 꿈 속의 꿈 속..으로 들어간 경우 마지막 꿈부터 깨면서 나오는 것을 상상하시면 될 것 같습니다. 꿈에 들어가는게 if문, 나오는게 else문이라고 생각하면 이해가 잘 되실까요? 아무튼 문제를 보시죠!

백준 2753 문제

 

문제 분석

앞의 '두 수 비교하기' 문제나 '시험 성적' 문제는 '작거나 / 같거나 / 크거나' 또는 '100~90~80~70~60~0' 과 같이 구간을 나누었죠? 아래와 같이 직선 상에 구간을 표현할 수 있을 것 같습니다.

대소비교 도식
대소비교 도식
점수 구간 도식
점수 구간 도식

하지만, 이번 '윤년' 문제는 직선 상의 구간을 나누는 것이 아닌 '포함 관계'를 표현해야 합니다. 아래 도식과 위의 도식을 비교해 봅시다!

윤년 도식
백준 2753 윤년 도식

앞서 인셉션을 떠올리자고 했었죠? 첫번째 꿈은 4의 배수입니다. 두번째 꿈은 100의 배수, 세번째 꿈은 400의 배수네요. 마지막 세번째 꿈에서 3가지 조건을 모두 만족했을 때 출력값을 지정하고 else문으로 차례대로 빠져나오면서 역시 출력값을 지정해 주면 됩니다! 
(4배수 집합 - (100배수 집합 - 400배수 집합))

 

답안

위에서 설명드린 내용을 코드로 옮겨보겠습니다. 주의할 점은 if문 안의 if문은 공백 4칸을 들여쓰기해야 하며, else문은 가장 안쪽의 if문부터 순차적으로 닫아주어야 합니다. 비교 연산자는 '==' 과 같이  등호 2개를 붙여서 사용합니다. 하나만 사용시에는 변수를 지정하게 되니 의도하지 않은 결과나 에러가 발생할 수 있습니다.

백준 2753 답안 (파이썬)
백준 2753 답안 (파이썬)

코드에 대한 설명은 주석 (# 이하) 으로 삽입했습니다. 주석은 파이썬에서 코드로 인식하지 않아 필요한 행에 설명을 추가할 수 있습니다.

 

제출 결과를 확인하고,

제출 결과
제출 결과

마치도록 하겠습니다.

 

읽어주셔서 감사합니다.

반응형

댓글