본문 바로가기
Algorithm

[Algorithm] 만 나이 계산하기 (Calculate american age)

by 노력남자 2020. 5. 6.
반응형

문제

 

생년월일을 입력받아 만 나이를 반환하시오.

 

풀이

 

만 나이(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

 

만 나이 조회 사이트

 

https://www.xn--910bn8oynl.kr/

반응형

댓글