티스토리 뷰

 

[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 거짓일 때 값

 

반응형
댓글
반응형