본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q2008 : 오름차순? 내림차순? 2

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q2008 : 오름차순? 내림차순? 2 (자바, JAVA)입니다.

Intro

Question

문제 설명

숫자에 관심이 많은 영일이는 수열을 보고 오름차순 수열인지 내림차순 수열인지 판단하려고 한다.

오름차순이란 작은 수부터 큰 수 순서로 나열한것을 말하고, 내림차순은 그 반대인 경우이다.

이 두 경우가 아닌 경우는 '섞임'으로 판단한다.

n개의 수가 주어지면, '오름차순', '내림차순', '섞임'을 판단하는 프로그램을 작성하시오.

예를 들어, 1 1 2 3 5 5 6인 경우 '오름차순', 7 6 6 5 3 1인 경우 '내림차순', 21 22 21 22인 경우 '섞임'으로 판단한다.

만약 모두 같은 수가 입력되면 '섞임'으로 판단한다.

입력

첫째 줄에 데이터의 개수 n이 주어진다. (2≤n≤100)
둘째 줄에 n개의 수가 공백으로 분리되어 입력된다.(각각의 수는 1~200인 정수)

출력

수의 순서가 오름차순인 경우 '오름차순', 내림차순인 경우 '내림차순', 둘 다 아닐 경우 '섞임'을 출력한다.

예시

  • 입력 :
    7
    2 3 5 5 6 6 7
  • 출력 : 오름차순

Solution (풀이)

  • 풀이 : 메모리 11160, 시간 : 65
public class Answer1 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int count = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        // 첫 숫자
        int first = Integer.parseInt(st.nextToken());
        // 경로(오름차순 or 내림차순)
        String path = null;
        for (int i=0; i<count-1; i++) {
            int number = Integer.parseInt(st.nextToken()); // 다음 숫자 입력받기

            if (path == null) {
                if (number > first) {
                    path = "오름차순";
                } else if (number < first) {
                    path = "내림차순";
                }
            }

            else if (path.equals("오름차순")) { // 이미 오름차순 인 경우 섞임 판단
                if (number >= first) {

                } else {
                    path = "섞임";
                }
            }

            else if (path.equals("내림차순")) {  // 이미 내림차순 인 경우 섞임 판단
                if (number <= first) {

                } else {
                    path = "섞임";
                }
            }
            first = number;
        }

        System.out.println(path==null ? "섞임" : path);
    }

}

Ranking(순위)

반응형