알고리즘/Softeer

Softeer - 8단 변속기 / Python

Hwisaek 2021. 10. 16. 16:19
반응형

문제: https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=408 

 

Softeer

제한시간 : C/C++(1초), Java/Python(2초) | 메모리 제한 : 128MB 현대자동차에서는 부드럽고 빠른 변속이 가능한 8단 습식 DCT 변속기를 개발하여 N라인 고성능차에 적용하였다. 관련하여 SW 엔지니어인 당

softeer.ai

문제 설명

더보기

현대자동차에서는 부드럽고 빠른 변속이 가능한 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