Algorithm/Implementation

(Python/파이썬) - 백준(BOJ) 11536번 : 줄 세우기

하눤석 2022. 4. 29. 09:31
728x90

https://www.acmicpc.net/problem/11536

 

11536번: 줄 세우기

이름이 증가하는 순으로 나타나면 INCREASING, 감소하는 순이면 DECREASING을 한 줄에 출력한다. 만약 위의 두 경우가 아니라면 NEITHER를 출력한다.

www.acmicpc.net


  • 문제 : 

악독한 코치 주혁은 선수들을 이름 순으로 세우는 것을 좋아한다. 더 악독한 것은 어떤 순서로 서야할지도 알려주지 않았다! 선수들의 이름이 주어질 때 어떤 순서로 이루어져있는지 확인해보자.

 

 

 


  • 풀이 :

구현 문제입니다. 

 

주어진 N개의 이름들이 전부 오름차순이라면 INCRESING 내림차순이라면 DECRESING 둘 다 아니라면 NEITHER를 출력하면 됩니다.

 

다음은 문제 해결 알고리즘의 흐름입니다.

 

1.  주어진 이름들을 name 배열에 넣고 0, 1 번째 인덱스 값을 비교한 boolean값을 check에 넣는다.

 

ex)  abc와 bcd를 비교했을 때 abc가 사전순으로 더 앞에 있으므로 check에는 True가 저장되게 됩니다.

 

2. 1번부터 N-1번째 인덱스까지 i와 i+1번째 이름을 비교한 결괏값이 check와 다르다면 오름차순과 내림차순 둘 다 아니라는 것이므로 NEITHER를 출력하고 종료한다.

 

3. for문이 종료하면 NEITHER가 아닌 것이므로 check 값에 따라 NCRESING 또는 DECRESING을 출력한다.

 

부가설명 ) check의 초기값이 name[0] < name[1] 이므로 True라면 오름차순, False라면 내림차순이다.

 


  • 소스코드 : 
import sys
input = sys.stdin.readline

N = int(input())
name = [input().strip() for _ in range(N)]
check = (name[0] < name[1])
for i in range(1,N-1):
    if check != (name[i] < name[i+1]):
        print("NEITHER")
        exit()
if check:
    print("INCREASING")
else:
    print("DECREASING")
320x100