n개의 정수(n > 0) 으로 이루어진 수열에 대해 서로 인접해 있는 두 수의 차가 1에서 (n - 1)까지의 값을 모두 가지면 그 수열을 유쾌한 점퍼라고 부른다. 예를 들어 다음과 같은 수열에서

 

1 4 2 3 

 

앞뒤에 있는 숫자 차의 절대 값이 각각 3, 2, 1 이므로 이 수열은 유쾌한 점퍼가 된다. 어떤 수열이 유쾌한 점퍼인지 판단할 수 있는 프로그램을 작성하라.

 

입력

수열을 나타내는 n 개의 정수가 입력 된다. 

 

출력

입력된 수열에 대해  "Jolly" 또는 "Not jolly"를 한 줄씩 출력한다.

 

예제

1 4 2 3  → Jolly

1 4 2 -1 6  → Not jolly


해설

한 줄을 입력 받아서 split() 함수를 통해 각 수를 분리해낸다. 이제 각 수를 분리해서 list에 넣으면 된다.

list를 하나씩 검색하면서 앞뒤 숫자의 차를 구한 후, (n - 1) 까지의 수가 모두 있는지 검사하면 된다.

# Quiz 0009 , Jolly Jumpers
# written by badsaram

import sys

class JollyJumpers(object):
    def __init__(self):
        self.sequence = []
        self.gap = []

    def input(self):
        input_valid = False
        self.sequence = []
        self.gap = []

        str = input()

        tokens = str.split(' ')
        for token in tokens:
            if (token.lstrip('-').isdigit() == True):
                self.sequence.append(int(token))
                input_valid = True
            else:
                break

        print(self.sequence)

        if (input_valid == True):
            for i in range(0, len(self.sequence) - 1):
                self.gap.append(abs(self.sequence[i] - self.sequence[i + 1]))
        else:
            self.sequence = []
            print("There is invalid digit. Please input again")

        print(self.gap)

    def check(self):
        isjolly = True

        for i in range(0, len(self.sequence) - 1):
            try:
                self.sequence.index(i + 1)
            except:
                isjolly = False

        if (len(self.sequence) == 0):
            pass
        elif (isjolly == True):
            print("Jolly")
        else:
            print("Not jolly")

if __name__ == '__main__':
    obj = JollyJumpers()

    obj.input()
    obj.check()

+ Recent posts