본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1168 : 나이 계산 1

반응형

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

intro

Question

문제 설명

입력

생년월일(6자리)과 성별정보(1자리)가 공백으로 분리되어 정수로 주어진다.

출력

2012년도에 현재 나이를 출력하시오.

예시

  • 입력 : 790101 1
  • 출력 : 34

Solution (풀이)

  • 풀이 1 : 메모리 11252, 시간 95
public class Answer1 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 주민등록번호를 입력받는다. 
        int frontNo = Integer.parseInt(st.nextToken());
        int backNo = Integer.parseInt(st.nextToken());

        // 현재 년도
        int now = 2012;
        // 나이
        int age = 0;

        if (backNo==1 || backNo==2) {    // 1900년대생
            frontNo = frontNo/10000+1900; // 몫에서 해당 년대를 더한다.
        } else {    // 2000년대생
            frontNo = frontNo/10000+2000;
        }
        // 나이는 현재년도 - 태어난년도 +1
        age = now - frontNo+1;

        bw.append(String.valueOf(age));

        bw.flush();
        br.close();
        bw.close();
    }

}
  • 풀이 2 : 메모리 11168, 시간 65
public class Answer2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        // 주민등록번호를 입력받는다. 
        int frontNo = Integer.parseInt(st.nextToken());
        int backNo = Integer.parseInt(st.nextToken());

        // 현재 년도
        int now = 2012;
        // 나이
        int age = 0;

        if (backNo==1 || backNo==2) {    // 1900년대생
            frontNo = frontNo/10000+1900; // 몫에서 해당 년대를 더한다.
        } else {    // 2000년대생
            frontNo = frontNo/10000+2000;
        }
        // 나이는 현재년도 - 태어난년도 +1
        age = now - frontNo+1;
        System.out.print(age);
    }
}

메모리와 시간을 확인해보면 알 수 있듯이, 출력해야하는 데이터가 단순하거나 하나일 때에는 굳이 다른 클래스를 이용하여 출력하는 것 보다 바로 그 값을 출력하는 것이 훨신 속도에 도움이 된다.

System.out.println(); 메소드보다 System.out.print();가 속도적인 측면에서는 더 낫기 떄문에 굳이 줄바꿈을 할 필요가 없다면 구분해서 사용하도록 하자.

Ranking(순위)

반응형