티스토리 뷰
[Python] 백준 알고리즘 온라인 저지 2753번 : 윤년
Python3 코드
1) if - else 조건식
year = int(input())
if ((year%4 == 0)and(year%100 != 0)) or (year%400 == 0):
print('1')
else:
print('0')
2)삼항 연산자
year = int(input())
print('1') if ((year%4 == 0)and(year%100 != 0)) or (year%400 == 0) else print('0')
Python3 코드 풀이
1. 작성한 코드에 대한 전체적인 내용 정리
이 문제는 연도를 나타내는 숫자를 입력받으면 해당 연도가 윤년이면 1 아니면 0을 출력한다. 윤년인지 아닌지를 판별하는 조건식에서 True/False 즉, Boolean 값에 따라 출력 값을 달리하는 문제이므로 if 조건식을 이용해서 코드를 작성하였다. 또한, if조건식은 삼항 연산자를 이용하여 한 줄로 표현할 수 있기 때문에 삼항 연산자를 이용한 코드도 작성해보았다.
2. 코드 첫째줄, 년도를 입력 받는다.
year = int(input())
먼저, input 함수로 입력받는 숫자는 문자열로 입력받게 되므로 int 함수를 이용해서 정수로 변환한다. 숫자를 선언할 변수 이름은 연도를 나타내기 때문에 year로 정해보았다.
3. 윤년을 코드로 작성
((year%4 == 0)and(year%100 != 0)) or (year%400 == 0) # 윤년
문제에 따르면 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 이 문장을 나머지 연산자와 비교 연산자를 이용하여 표현해 보았다.
우선, 나머지 연산자(%)를 이용해서 배수를 표현했다. 4의 배수는 연도로 입력받은 수를 4로 나누었을 때 나머지가 0인 값으로 표현해볼 수 있다. 마찬가지로 100의 배수는 100을 나누어서 나머지가 0인 값, 400의 배수는 400으로 나누어서 나머지가 0인 값으로 표현했다.
비교 연산자 중 같다(==)와 같지 않다(!=) 연산자를 이용해서 4의 배수인 값과 100의 배수가 아닌 값, 400의 배수인 값을 표현하였다. 각각 (year%4 == 0)은 4의 배수인 값, (year%100!= 0)은 100의 배수가 아닌 값, (year%400 == 0)은 400의 배수인 값을 표현한 식이다.
(4의 배수이면서 100의 배수가 아닌 때)라는 문장은 4의 배수와 100의 배수가 아닌 때라는 두 가지 조건을 동시에 만족해야 한다. 두 조건이 True 일 때 참인 값을 나타내는 연산자는 and이므로 ((year%4 == 0) and(year%100!= 0)) 로 표현할 수 있다. and로 연결해야 하는 두 개의 식은 괄호로 묶어주었다.
(또는 400의 배수일 때)라는 문장은 '또는'을 기준으로 앞 문장과 뒷 문장 중 하나만 True인 값을 나타내는 연산자 or를 사용하였다.
4. if - else 조건식
if ((year%4 == 0)and(year%100 != 0)) or (year%400 == 0):
print('1') # 윤년 조건식이 참인경우
else:
print('0') # 거짓인경우
윤년인 경우 1, 아닌 경우 0을 출력해야 하므로 if-else 조건식을 이용해서 조건식이 참인 경우와 거짓인 경우의 출력 값을 달리하도록 코드를 작성하였다.
5. 삼항 연산자로 작성한 코드
print('1') if ((year%4 == 0)and(year%100 != 0)) or (year%400 == 0) else print('0')
삼항 연산자는 if조건식을 한 줄로 표현하는 것이 가능하다. 조건식이 복잡하면 가독성을 해치지만 이번 문제는 길이나 조건식이 한 줄로 표현하기에 적정한 것 같아서 작성해보았다. 사용방법은 아래와 같다.
참일 때 값 if 조건식 else 거짓일 때 값
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 14681번 [파이썬 알고리즘] 사분면고르기 (0) | 2020.07.02 |
---|---|
백준 9498번 [파이썬 알고리즘] 시험성적 (0) | 2020.07.02 |
백준 1330번 [파이썬] 두수 비교하기 풀이 (0) | 2020.07.02 |