본문 바로가기
  • The future is ours
코딩(파이썬)_백준

백준 알고리즘 2920번 음계 (파이썬, python)

by scarlet bloom flowers once more 2022. 5. 11.
반응형

이 문제는 주어진 리스트의 수가 지속적으로 상승하는지, 하락하는지, 아니면 랜덤인지만 파악하면 되는 간단한 문제이다. list(map(int,input().split()))을 이용해 리스트에 각 숫자를 넣고, for구문을 이용해 리스트의 길이만큼 리스트 내의 숫자의 순서가 상승 또는 하락, 아니면 랜덤인지 확인하면 된다. 한번 시도해보자.

///

s=list(map(int,input().split()))
a=0
d=0
for i in range(len(s)):
    if s[i]==i+1:
        a+=1
    elif s[i]==len(s)-i:
        d+=1
if a==8:
    print("ascending")
elif d==8:
    print("descending")
else:
    print("mixed")

///

먼저 s를 리스트형태로 취하고, 스페이스바를 기준으로 입력되는 모든 수를 리스트 안에 각각의 정수로 append한다. 

그리고 나의 경우에는, a와 d라는 변수를 생성해줬다. 이는 추후 각각 'a'scending 또는 'd'escending에 부합하는지 알기 위해서 추가한 변수이다.

for구문을 통해, s list의 길이만큼 반복해주는데, 이때 s의 i번째 수가 i+1(i=0부터 시작하기에 +1을 하여 1부터 시작하게끔 맞춰주어야한다)와 부합하는지를 구하고, 이와 부합하면 a에 1을 더해준다. 이 과정을 통해 a가 8이 된다면 완벽한 ascending조건에 부합하는 것이다. 

이와 반대되는 경우는 elif식에 적었는데, 이 조건에 부합하면 descending이 되는 것이다. 이 두 조건 모두 부합하지 않는다면, 남은 선택지는 mixed이므로, else를 이용해 이를 출력해준다.

반응형