문제: https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=408
문제 설명
현대자동차에서는 부드럽고 빠른 변속이 가능한 8단 습식 DCT 변속기를 개발하여 N라인 고성능차에 적용하였다. 관련하여 SW 엔지니어인 당신에게 연속적으로 변속이 가능한지 점검할 수 있는 프로그램을 만들라는 임무가 내려왔다.
당신은 변속기가 1단에서 8단으로 연속적으로 변속을 한다면 ascending,
8단에서 1단으로 연속적으로 변속한다면 descending,
둘 다 아니라면 mixed라고 정의했다.
변속한 순서가 주어졌을 때 이것이 ascending인지, descending인지, 아니면 mixed인지 출력하는 프로그램을 작성하시오.
입력 형식
첫째 줄에 8개 숫자가 주어진다.
이 숫자는 문제 설명에서 설명한 변속 정도이며, 1부터 8까지 숫자가 한 번씩 등장한다.
출력 형식
첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.
입력 예제
1 2 3 4 5 6 7 8
출력 예제
ascending
정답
# https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=408
gears = list(map(int, input().split()))
def solution(gears):
last = gears[0]
if last == 1:
answer = "ascending"
elif last == 8:
answer = "descending"
else:
return "mixed"
for gear in gears[1:]:
if answer == "ascending" and gear == last + 1:
last = gear
elif answer == "descending" and gear == last - 1:
last = gear
else:
return "mixed"
return answer
print(solution(gears))
풀이
시작 숫자가 1이면 마지막 숫자까지 1 씩 증가하는지 확인하면서 맞으면 ascending 아니면 mixed를 출력하도록 합니다.
시작 숫자가 8이면 마지막 숫자까지 1씩 감소하는지 확인하면서 맞으면 descending 아니면 mixed를 출력하도록 합니다.
둘 다 아니면 mixed이므로 해당 값을 출력하도록 합니다.
ascending 또는 descending 중 예외가 발생하면 즉시 중단하도록 하기 위해 함수를 이용하면 깔끔할 것이라 생각하여 함수로 구현했습니다.
'알고리즘 > Softeer' 카테고리의 다른 글
Softeer - 성적 평균 / Python (0) | 2021.10.16 |
---|---|
Softeer - 금고털이 / Python (0) | 2021.10.16 |
Softeer - 바이러스 / Python (0) | 2021.10.16 |
Softeer - 장애물 인식 프로그램 / Python (0) | 2021.10.16 |