본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1169 : 나이 계산 2

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1169 : 나이 계산 2 (자바, JAVA)입니다.

intro

Question

문제 설명

입력

나이가 입력으로 주어진다.(정수, 나이는 113살 이하만 입력으로 들어온다.)

출력

출생년도 뒤의 두자리와 연도정보(1이면 1900년대, 3이면 2000년대)를 출력한다.
(단, 출생년도 뒤 2자리가 10보다 작을 경우10의자리에 0은 붙이지 않고 출력한다.)
예) 2009년생이라면 9 3 을 출력함. (09 3 이 아님)

예시

  • 입력 : 18
  • 출력 : 95 1

Solution (풀이)

  • 풀이 1 : 메모리 11244, 시간 90
public class Answer1 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int age = Integer.parseInt(br.readLine());     // 나이를 입력 받는다.
        int now = 2012; // 현재 년도

        int bornYear = now - (age-1);     // 태어난 년도

        // 년도의 마지막 두자리만 append
        bw.append(String.valueOf(bornYear%100)).append(" ");

        if (age>13) {    // 나이가 12보다 크면 1900년대 생 
            bw.append("1");
        } else { // 나이가 12보다 같거나 작으면 2000년대 생
            bw.append("3");
        }

        bw.flush();
        br.close();
        bw.close();
    }
}
  • 풀이 2 : 메모리 11152, 시간 67
public class Answer2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int age = Integer.parseInt(br.readLine());     // 나이를 입력 받는다.
        int now = 2012; // 현재 년도

        int bornYear = now - (age-1);     // 태어난 년도

        // 년도의 마지막 두자리만 append
        sb.append(bornYear%100).append(" ");

        if (age>13) {    // 나이가 12보다 크면 1900년대 생 
            sb.append("1");
        } else { // 나이가 12보다 같거나 작으면 2000년대 생
            sb.append("3");
        }

        System.out.print(sb);
    }
}

BufferedWriter와 다르게 StringBuilder는 형식을 굳이 String 타입으로 맞추어 주지 않아도 append할 수 있다.

Ranking(순위)

반응형