본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1171 : 당신의 학번은? 2

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1171 : 당신의 학번은? 2 (자바, JAVA)입니다.

intro

Question

문제 설명

입력

학년, 반, 번호가 공백을 기준으로 입력으로 주어진다. (정수)

입력범위:
학년 : 3이하 , 반, 6이하, 번호, 30이하

출력

출생년도 뒤의 두자리와 연도정보(1이면 1900년대, 3이면 2000년대)를 출력한다.
(단, 출생년도 뒤 2자리가 10보다 작을 경우10의자리에 0은 붙이지 않고 출력한다.)
학번을 붙여서 출력한다. 번호가 10번 미만일때는 0을 붙여 출력한다.

예시

  • 입력 : 3 1 2
  • 출력 : 3102

Solution (풀이)

  • 풀이 1 : 메모리 11252, 시간 104
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));

        // 순서대로 입력 될 학년은 바로 더해준다.
        bw.append(st.nextToken());
        String classes = st.nextToken();
        String number = st.nextToken();

        if (classes.length()<2) {    // 자리수가 2자리보다 낮으면 앞에 0 붙이기
            bw.append("0" + classes);
        } else {    // 자리수가 2자리이면 그대로 저장
            bw.append(classes);
        }

        if (number.length()<3) {    // 번호의 자리수가 3보다 낮으면
            for (int i=0; i<3-number.length(); i++) {    //낮은만큼 for문 돌리기
                bw.append("0");
            }
        }
        bw.append(number);

        bw.flush();
        br.close();
        bw.close();
    }
}
  • 풀이 2 : 메모리 11156, 시간 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(), " ");
        StringBuilder sb = new StringBuilder();

        // 순서대로 입력 될 학년은 바로 더해준다.
        sb.append(st.nextToken());
        String classes = st.nextToken();
        String number = st.nextToken();

        if (classes.length()<2) {    // 자리수가 2자리보다 낮으면 앞에 0 붙이기
            sb.append("0" + classes);
        } else {    // 자리수가 2자리이면 그대로 저장
            sb.append(classes);
        }

        if (number.length()<3) {    // 번호의 자리수가 3보다 낮으면
            for (int i=0; i<3-number.length(); i++) {    //낮은만큼 for문 돌리기
                sb.append("0");
            }
        }
        sb.append(number);
        System.out.print(sb);
    }
}

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

StringTokenizer를 통하여 번호를 입력 받을때 굳이 Integer타입으로 받지 않고 그 길이를 조건으로 조금더 캐팅하는 번거로움을 줄일 수 있다.

Ranking(순위)

반응형