본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1170 : 당신의 학번은? 1

반응형

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

intro

Question

문제 설명

입력

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

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

출력

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

예시

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

Solution (풀이)

  • 풀이 1 : 메모리 11188, 시간 91
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()).append(st.nextToken());

        int number = Integer.parseInt(st.nextToken());
        if (number>=10) {    // 번호가 10 이상이면
            bw.append(String.valueOf(number));
        } else {    // 번호가 10 미만이면
            bw.append("0" + number);
        }

        bw.flush();
        br.close();
        bw.close();
    }
}
  • 풀이 2 : 메모리 11172, 시간 66
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()).append(st.nextToken());

        int number = Integer.parseInt(st.nextToken());
        if (number>=10) {    // 번호가 10 이상이면
            sb.append(number);
        } else {    // 번호가 10 미만이면
            sb.append("0" + number);
        }
        System.out.print(sb);
    }
}
  • 풀이 3 : 메모리 11156, 시간 65
public class Answer3 {
    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()).append(st.nextToken());

        String number = st.nextToken();
        if (number.length() >= 2) {    // 번호의 String 타입이 두자리 이상이면
            sb.append(number);
        } else {    // 번호가 10 미만이면
            sb.append("0" + number);
        }
        System.out.print(sb);
    }
}

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

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

Ranking(순위)

반응형