-
2753번 : 윤년알고리즘 공부/백준 Python 코딩테스트 2021. 10. 12. 11:43
[ 문제 ]
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다.
1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다.
하지만, 2000년은 400의 배수이기 때문에 윤년이다.[ Input ]
첫째 줄에 연도가 주어진다.
연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.[ Output ]
첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
[ 풀이1 ]
if, else 한 구문에 조건을 다 넣을 수도 있지만 개인적으로 한 구문에 넣어서 한 row 가 길어지는 걸 좋아하지 않아서 이렇게 따로 썼다. 이렇게 쓰고 나니 걍 길게 하는게 더 깔끔한 것 같다.ㅎ 다음부턴 고집부리지 말아야 겠당 ㅎㅎㅜ
윤년의 첫번째 조건은 4의 배수여야하는 것이다.
그러므로 '4의 배수가 맞다'가 if 절 처음 조건이되었고 4의 배수가 아니라면 0을 print 한다.
그리고 2번째는 100의 배수면 윤년이 아니고 100은 4의 배수이므로 처음 조건안에 위치하는 중복 if 절이다.
두번째 if문의 조건으로 '100의 배수가 맞다'를 넣으면 이미 4의 배수안에서 100의 배수를 판별한 것이므로 else에는 윤년임을 print 해야한다.
또한 400의 배수는 100의 배수이므로 또다시 중첩으로 들어가서 400의 배수이면 윤년이고 아니면 0을 print하도록한다.
[ 코드1 ]
# year input year = int(input()) if year % 4 == 0: if year % 100 == 0: if year % 400 == 0: print(1) else: print(0) else: print(1) else: print(0)
[ 풀이2 ]
이번엔 풀이1에서 말한것처럼 조건을 한줄로 써보려고 한다.
문제에서 주어진 것 처럼 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때를 조건으로 가져야 하므로 4의 배수가 맞고 100의 배수가 아니거나 400의 배수이면 윤년이다! 라고 조건을 써주면된다.
[ 코드2 ]
# year input year = int(input()) if (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0): print(1) else: print(0)
'알고리즘 공부 > 백준 Python 코딩테스트' 카테고리의 다른 글
1934번 : 최소공배수 (0) 2021.10.13 10039번 : 평균 점수 (0) 2021.10.12 1789번 : 수들의 합 (0) 2021.10.12 11653번 : 소인수분해 (0) 2021.10.08 2935번 : 소음 (0) 2021.10.08