[codeup] 2008 : 오름차순? 내림차순? 2

SUNGJIN KIM·2021년 11월 22일
0

CODEUP

목록 보기
8/76
post-thumbnail

문제

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

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

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

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

출력

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

출력 예시

오름차순

문제 풀이

이전에 풀었던 것을 이용하여 문제를 풀이하였다.
일단 이전의 로직은 그대로 유지한채, "모두 같은 수"라는 케이스만 하나 더 추가를 했다.

처음에 해당 문제를 어떻게 해결할 지 고민을 했는데, 중간에 중복된 값을 지우고 개수를 셀건지 등등

조금 천천히 생각을 해보니, "모두 같은 수"라는 조건을 제외하고는 나머지는 중복된 값이 있어도 동등하게 비교를 하는 것으로 이해가 되어, 아예 해당 조건을 상위 조건으로 만들었다.

함수로 표현한 까닭은 소스코드가 너무 길어질 것 같아서 한눈에 쉽게 해결하기위해 중복값 체크하는 함수를 만들었고, 그걸 통해서 중복값을 확인할 수 있도록 코드를 작성하였다.

num_cnt = int(input())
setting_num_list = list(range(num_cnt))

setting_num_list = list(map(int, input().split()))

sorted_num_list = sorted(setting_num_list)
reversed_num_list = list(reversed(sorted_num_list))

def check_duplicate_values(num_list):
    cnt = 0
    for i in range(0,len(num_list)-1):
        if num_list[i] == num_list[i+1]:
            cnt += 1
    if cnt == len(num_list)-1:
        return True
        
if check_duplicate_values(setting_num_list) == True:
    print("섞임")
else:
    if setting_num_list == sorted_num_list:
        print("오름차순")
    elif setting_num_list == reversed_num_list:
        print("내림차순")
    else:
        print("섞임")
profile
#QA #woonmong

0개의 댓글