[codeup] 2007. 오름차순? 내림차순? 1

SUNGJIN KIM·2021년 11월 15일
0

CODEUP

목록 보기
6/76
post-thumbnail

문제

성근이는 오름차순과 내림차순에 대한 공부를 하고 있다.

어떤 수 n개가 주어지면 그 수열이 오름차순인지, 내림차순인지, 섞여 있는지 판단하시오.

입력

첫째 줄에 데이터의 개수 n이 주어진다. ( 2 <= n <=100 )

둘째 줄에 n개의 서로 다른 데이터 값이 공백으로 분리되어 입력된다.

입력 예시

5
2 5 8 10 29

출력

데이터의 순서가 오름차순일 경우 "오름차순"을 출력,

내림차순일 경우 "내림차순"을 출력,

둘 다 아닐 경우 "섞임"을 출력하시오.

출력 예시

오름차순

문제 풀이

문제를 풀다보니, python 에서는 굳이 첫번째줄의 데이터 개수를 입력받지 않아도 되는 해당 문제를 충분히 풀 수 있는 것을 알았다.

그래서 2가지의 방법으로 해당 문제를 해결하였다.

case 1: 배열의 범위를 받지 않고 해결하는 방법

num_list 라는 리스트를 만들어, 리스트를 입력 받고 비교할 대상을 각각의 리스트에 넣어주었다.
여기서 한가지 애먹었던 부분은 reversed(sorted_num_lis)를 하는데, 계속 오류가 나와서 확인해보니 reversed의 경우 이터레이터 형식의 값으로 리턴해주어서 list로 형 변환이 필요했다.

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

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

if num_list == sorted_num_list:
    print("오름차순")
elif num_list == reversed_num_list:
    print("내림차순")
else:
    print("섞임")

case 2: 배열의 범위를 받아서 해결하는 방법

처음 입력할때, 배열의 크기를 받고 해당 배열을 먼저 만들고 그 다음에 input을 받았다. (입력 예시와 동일하게 하기 위해서)
그 외 밑의 풀이 방식은 동일하다.

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

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

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

if setting_num_list == sorted_num_list:
    print("오름차순")
elif setting_num_list == reversed_num_list:
   print("내림차순")
else:
    print("섞임")

문제를 풀다보니 배열의 범위를 받아서 하는게 더 머리가 아팠던 것 같다.
for 문을 돌려서 직접적으로 받으려고 했는데, 입력 예시와 같이 받아지지 않아서 어떤식으로 받아야할지 한참 고민했다.

case 2에서 사실 해당 문구는 필요없는데, 문제 형식을 맞추기 위해서 작성한 코드로 없어도 무관할 것 같다.

num_list = int(input())
setting_num_list = list(range(num_list))
profile
#QA #woonmong

0개의 댓글