본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1172 : 세 수 정렬하기

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1172 : 세 수 정렬하기 (자바, JAVA)입니다.

intro

Question

문제 설명

입력

세 정수가 입력된다.

입력범위:
낮은 숫자 부터 출력한다.

출력

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

예시

  • 입력 : 8 7 6
  • 출력 : 6 7 8

Solution (풀이)

  • 풀이 1 : 메모리 11276, 시간 115

정말 비효율적이지만 사실 이렇게 노가다성 코드가 확실할 때에도 분명히 있다. (하지만 여기서는 아니었다.. ^^)

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));

        // 3개의 숫자를 입력 받았다.
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int c = Integer.parseInt(st.nextToken());

        if (a>b) {
            if (b>c) {
                bw.append(String.valueOf(c)).append(String.valueOf(" "+b)).append(String.valueOf(" "+a));
            } else {
                if (a>c) {
                    bw.append(String.valueOf(b)).append(String.valueOf(" "+c)).append(String.valueOf(" "+a));
                } else {
                    bw.append(String.valueOf(b)).append(String.valueOf(" "+a)).append(String.valueOf(" "+c));
                }
            }
        } else {
            if (a>c) {
                bw.append(String.valueOf(c)).append(String.valueOf(" "+a)).append(String.valueOf(" "+b));
            } else {
                if (b>c) {
                    bw.append(String.valueOf(a)).append(String.valueOf(" "+c)).append(String.valueOf(" "+b));
                } else {
                    bw.append(String.valueOf(a)).append(String.valueOf(" "+b)).append(String.valueOf(" "+c));
                }
            }
        }

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

        // 3수를 배열에 저장
        int[] number = new int[3];
        for (int i=0; i<3; i++) {
            // 배열에 인덱스 증가에 따라 저장
            number[i] = Integer.parseInt(st.nextToken());
        }

        // 배열 정렬
        Arrays.sort(number);

        // 향상 for문
        for (int i : number) {
            sb.append(String.valueOf(i)+" ");
        }
        System.out.print(sb);
    }
}

Arrays.sort()메소드를 통해서 오름차순으로 정렬할 수 있다.

만약 String타입의 배열을 Arrays.sort()를 통하여 정렬을 하게 되면, 각 인덱스의 문자 길이로 비교하기 때문에 주의하자.

Ranking(순위)

반응형