반응형
문제
생년월일을 입력받아 만 나이를 반환하시오.
풀이
만 나이(american age)란?
만 나이는 태어난 때를 기산점으로 하여 매 생일을 맞을 때마다 한 살을 먹는다. 태어나서 얼마나 살았느냐를 나타낸다. 전 세계 대부분의 나라에서 사용하고 있다. 대한민국에서는 일상생활에서는 보통 세는나이를 쓰지만, 법률 및 각종 공문서, 언론보도에서는 대부분 만 나이를 사용한다. 세는나이는 태어남과 동시에 한 살이 되지만, 만 나이는 출생 후 1년(돌)이 되면 1세가 되고 그 전에는 생후 개월수로 센다.
(출처 : 위키 https://ko.wikipedia.org/wiki/%EB%82%98%EC%9D%B4)
만 나이의 정의를 보면 태어난 때를 기산점(1)으로 하여 매 생일을 맞을 때마다 한 살(2)을 먹는다.
정의를 이용해서 생년월일이 2007년 05월 04일인 사람의 만 나이를 구해보면 아래와 같다.
코드
public static void main(String[] args) {
System.out.println("생년월일 2007년 05월 04일의 만 나이 : " + getAmericanAge("20070504"));
}
public static int getAmericanAge(String birthDate) {
LocalDate now = LocalDate.now();
LocalDate parsedBirthDate = LocalDate.parse(birthDate, DateTimeFormatter.ofPattern("yyyyMMdd"));
int americanAge = now.minusYears(parsedBirthDate.getYear()).getYear(); // (1)
// (2)
// 생일이 지났는지 여부를 판단하기 위해 (1)을 입력받은 생년월일의 연도에 더한다.
// 연도가 같아짐으로 생년월일만 판단할 수 있다!
if (parsedBirthDate.plusYears(americanAge).isAfter(now)) {
americanAge = americanAge -1;
}
return americanAge;
}
결과
생년월일 2007년 05월 04일의 만 나이 : 13
만 나이 조회 사이트
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] 10진수를 2, 8, 16 진수로 변환하기 (Convert decimal to binary, octal, and hexadecimal) (0) | 2019.11.04 |
---|---|
[Algorithm] 스택 두 개로 큐 만들기 (Implementing a Queue Using Two Stacks) (1) | 2019.10.22 |
댓글