[백준 2753번 윤년] 16강. 백준 단계별로 풀어보기 <2-3>
안녕하세요 밤샘공부입니다~
질문이 있으시면, 아래 오픈채팅방이나 메일로 보내주세요~
2시간 이내에 답변 드리겠습니다.
오픈챗 링크 : https://open.kakao.com/o/srASNxef
메일 주소 : studying.all.night.1114@gmail.com
전달력을 높이기 위해 평어체를 사용하였습니다.
1. 문제 설명
(1) 문제
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다. |
(2) 입력
첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다. |
(3) 출력
첫째 줄에 윤년이면 1, 아니면 0을 출력한다. |
(4) 예제
① 예시 1
- 입력
2000
- 출력
1
2. 문제 해석 및 총평
조건문에 익숙치 않다면 조금 까다로운 문제일 수 있다. 이럴 때는, a4용지 하나를 들고와서 케이스 분류를 해보는 것도 좋다. 아직 문제를 해결하지 못한 상태라면 어서 아무 종이에 문제에 대한 풀이를 적어보자. 완벽하지 않아도 좋다. '코당'은 '암기'가 아니다. '수학'이다. 어느정도의 기술적 암기는 필요하겠으나 궁극적으로는 사고력을 높여야 한다. 아래에 이미지를 첨부해 둘테니, 먼저 스스로 고민하고 살펴보자.
3. 코드
(1) 방식 1
#방식 1
year = int(input())
if year%4 == 0 :
if year%100 == 0 :
if year%400 == 0 :
print(1)
else :
print(0)
else :
print(1)
else :
if year%400 == 0 :
print(1)
else :
print(0)
이 풀이를 모범답안이라고 하기는 좀 그렇고(실제 모범답안은 뒤에 나온다), 위에 필기해둔 방식을 그대로 코드로 구현해 보았다. 비효율적인 것 처럼 보이더라도, 자신의 생각을 코드로 구현할 줄 알아야 한다. 그런 과정이 익숙해지다보면, 논리구조가 단순화 되는 동시에 코드 또한 단순화 될 수 있다. 열심히 고민해 보자.
(2) 방식 2
#방식 2
year = int(input())
if year%400 == 0 :
print(1)
else :
if year%4 == 0 :
if year%100 == 0 :
print(0)
else :
print(1)
else :
print(0)
방식 1과 마찬가지로 논리 구조를 그대로 코드에 옮겼다. 아까 미쳐 말하지 못했지만, 이처럼 질문(조건)의 순서를 바꾸는 것 만으로도 단계를 나누는 경우의 수가 확 줄어들 수 있다. 만약, 확률론을 깊이 공부해본 학생이라면 '수형도'에서도 비슷한 상황이 벌어졌던 기억이 있을 것이다.
(3) 모범 답안
#모범 답안
year = int(input())
if (year%4 == 0 and year%100 != 0) or year%400 == 0 :
print(1)
else :
print(0)
요런 느낌으로 간단하게 생각할 수 있다. 앞의 두 방식이 이해가 되었다면, 이 방식 또한 부담없이 받아들일 수 있다.
(4) 추가풀이
#추가 풀이
year = int(input())
print(1 if (year%4 == 0 and year%100 != 0) or year%400 == 0 else 0)
삼항연산자르 이용하여 두 줄로 코드를 줄여보았다. (비추천 풀이. just 학습용)
'밤샘코딩 > 백준 AtoZ' 카테고리의 다른 글
[백준 2884번 알람시계] 18강. 백준 단계별로 풀어보기 <2-5> (0) | 2023.04.27 |
---|---|
[백준 14681번 사분면 고르기] 17강. 백준 단계별로 풀어보기 <2-4> (0) | 2023.04.26 |
[백준 9498번 시험 성적] 15강. 백준 단계별로 풀어보기 <2-2> (0) | 2023.04.24 |
[백준 1330번 두 수 비교하기] 14강. 백준 단계별로 풀어보기 <2-1> (0) | 2023.04.24 |
[백준 10172번 개] 13강. 백준 단계별로 풀어보기 <1-13> (0) | 2023.04.24 |
댓글
이 글 공유하기
다른 글
-
[백준 2884번 알람시계] 18강. 백준 단계별로 풀어보기 <2-5>
[백준 2884번 알람시계] 18강. 백준 단계별로 풀어보기 <2-5>
2023.04.27 -
[백준 14681번 사분면 고르기] 17강. 백준 단계별로 풀어보기 <2-4>
[백준 14681번 사분면 고르기] 17강. 백준 단계별로 풀어보기 <2-4>
2023.04.26 -
[백준 9498번 시험 성적] 15강. 백준 단계별로 풀어보기 <2-2>
[백준 9498번 시험 성적] 15강. 백준 단계별로 풀어보기 <2-2>
2023.04.24 -
[백준 1330번 두 수 비교하기] 14강. 백준 단계별로 풀어보기 <2-1>
[백준 1330번 두 수 비교하기] 14강. 백준 단계별로 풀어보기 <2-1>
2023.04.24