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()
'코딩 테스트' 카테고리의 다른 글
문제 11 : 동맹 휴업 (Hartal) (0) | 2022.08.26 |
---|---|
문제 10 : 포커 패 (Poker Hands) (0) | 2022.08.08 |
문제 8 : 호주식 투표법 (0) | 2022.08.01 |
문제 7 : 체크 확인 (Check the Check) (0) | 2022.07.29 |
문제 6 : 인터프리터(Interpreter) (0) | 2022.07.28 |