[백준/파이썬] 16199번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 16199번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
한국에서 나이는 총 3가지 종류가 있다.
-
만 나이: 국제적인 표준 방법이다. 한국에서도 법에서는 만 나이만을 사용한다.
-
세는 나이: 한국에서 보통 나이를 물어보면 세는 나이를 의미한다.
-
연 나이: 법률에서 일괄적으로 사람을 구분하기 위해서 사용하는 나이이다.
만 나이는 생일을 기준으로 계산한다. 어떤 사람이 태어났을 때, 그 사람의 나이는 0세이고, 생일이 지날 때마다 1세가 증가한다. 예를 들어, 생일이 2003년 3월 5일인 사람은 2004년 3월 4일까지 0세이고, 2004년 3월 5일부터 2005년 3월 4일까지 1세이다.
세는 나이는 생년을 기준으로 계산한다. 어떤 사람이 태어났을 때, 그 사람의 나이는 1세이고, 연도가 바뀔 때마다 1세가 증가한다. 예를 들어, 생일이 2003년 3월 5일인 사람은 2003년 12월 31일까지 1세이고, 2004년 1월 1일부터 2004년 12월 31일까지 2세이다.
연 나이는 생년을 기준으로 계산하고, 현재 연도에서 생년을 뺀 값이다. …
입력 요약
첫째 줄에 어떤 사람이 태어난 연도, 월, 일이 주어진다. 생년월일은 공백으로 구분되어져 있고, 항상 올바른 날짜만 주어진다.
둘째 줄에 기준 날짜가 주어진다. 기준 날짜도 공백으로 구분되어져 있으며, 올바른 날짜만 주어진다.
입력으로 주어지는 생년월일은 기준 날짜와 같거나 그 이전이다.
입력으로 주어지는 연도는 1900년보다 크거나 같고, 2100년보다 작거나 같다.
출력 요약
첫째 줄에 만 나이, 둘째 줄에 세는 나이, 셋째 줄에 연 나이를 출력한다.
코드
birth,now=list(map(int,input().split())),list(map(int,input().split()))
print(*[now[0]-birth[0]-(1 if now[1:3]<birth[1:3] else 0),now[0]-birth[0]+1,now[0]-birth[0]],sep='\n')
설명
핵심은 구현 관점에서 한국에서 나이는 총 3가지 종류가 있다.
-
만 나이: 국제적인 표준 방법이다. 한국에서도 법에서는 만 나이만을 사용한다.
-
세는 나이: 한국에서 보통 나이를 물어보면 세는 나이를 의미한다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기