코딩테스트

[백준] 16199 나이 계산하기_Java

오류유발자 2024. 5. 1. 18:50

한국에서 나이는 총 3가지 종류가 있다.

 

문제 링크

https://www.acmicpc.net/problem/16199

 

문제 풀이

1. 만 나이, 세는 나이, 연 나이를 구하여 출력하라.

만 나이 : 생일을 기준으로 하여, 태어난 후 0살부터 생일이 지날 때마다 1살씩 증가시켜 계산한다. 

세는 나이 : 연도를 기준으로 하여, 태어난 후 1살부터 연도가 바뀔 때 마다 1살씩 증가시켜 계산한다.

연 나이: 연도를 기준으로 하여, 태어난 후 0살부터 연도가 바뀔 때 마다 1살씩 증가시켜 계산한다.


2. 입력 값

 

 

코드1 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(bf.readLine());
        int[] birthday = new int[]{Integer.parseInt(st.nextToken()),
                                    Integer.parseInt(st.nextToken()),
                                    Integer.parseInt(st.nextToken())};

        st = new StringTokenizer(bf.readLine());
        int[] standardDay = new int[]{Integer.parseInt(st.nextToken()),
                                        Integer.parseInt(st.nextToken()),
                                        Integer.parseInt(st.nextToken())};

        int dis = standardDay[0] - birthday[0];
        int age1 = birthday[1] > standardDay[1] || (birthday[1] == standardDay[1] && birthday[2] > standardDay[2]) ? dis-1 : dis;
        int age2 = dis+1;
        int age3 = dis;

        System.out.println(age1 +"\n"+age2 +"\n"+age3);
    }
}

 

 

 

실행 결과1


 

코드2_LocalDate를 이용

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.LocalDate;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String[] birthday = bf.readLine().split(" ");
        String[] standardDay = bf.readLine().split(" ");

        LocalDate birthDate = LocalDate.of(Integer.parseInt(birthday[0]),Integer.parseInt(birthday[1]),Integer.parseInt(birthday[2]));
        LocalDate standardDate = LocalDate.of(Integer.parseInt(standardDay[0]),Integer.parseInt(standardDay[1]),Integer.parseInt(standardDay[2]));

        int dis = standardDate.getYear() - birthDate.getYear() ;
        LocalDate tempDate = birthDate.plusYears(dis);
        int age1 = standardDate.isBefore(tempDate)? dis-1 : dis;
        int age2 = dis+1;
        int age3 = dis;

        System.out.println(age1 +"\n"+age2 +"\n"+age3);
    }
}

 

 

 

실행 결과2