이 페이지는 코딩도장 데이터의 읽기 전용 정적 보관본입니다.

Jolly Jumpers

출처 : programming-challenges.com

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

1 4 2 3

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

Input

각 줄 맨 앞에는 3000 이하의 정수가 있으며 그 뒤에는 수열을 나타내는 n개의 정수가 입력된다. 맨 앞 숫자가 0이면 출력하고 종료한다.

output

입력된 각 줄에 대해 "Jolly" 또는 "Not Jolly"를 한 줄씩 출력한다

Sample Input

4 1 4 2 3
5 1 4 2 -1 6

※ 주의: 각 줄의 맨 앞의 숫자는 수열의 갯수이다. 첫번째 입력인 4 1 4 2 3 의 맨 앞의 4는 뒤에 4개의 숫자가 온다는 것을 의미함

Sample Output

Jolly
Not jolly
구현

2014/03/09 16:40

pahkey

151개의 풀이가 있습니다.

파이썬입니다. jolly 여부를 판단하는 do 함수는 입력받은 리스트의 인접 원소들을 짝지어서 그 차이를 구합니다. jolly jump 인 값은 이 차이의 집합을 정렬한 결과가 1, 2, 3, ..., n - 1 이기 때문에 그냥 set 으로 만들어서 비교했습니다.

def do(xs):
    return {abs(x[0] - x[1]) for x in zip(xs, xs[1:])} == set(range(1, len(xs)))

data = []
while True:
    i = [int(x) for x in input().split()]
    if i[0] == 0:
        break
    data.append(i[1:])
for d in data:
    if do(d):
        print("Jolly")
    else:
        print("Not Jolly")

2016/03/23 10:55

룰루랄라

+1 인접한 두수의 차를 zip(xs, xs[1:])으로 한다는 것은 생각 못했네요~ 잘 배우고 갑니다^^ - 디디, 2016/03/26 11:00

파이썬3.6

def is_jolly(nums):
    diff = [abs(a - b) for a, b in zip(nums, nums[1:])]
    return 'Jolly' if len({abs(a - b) for a, b in zip(diff, diff[1:])}) == 1 else 'Not jolly'

while 1:
    line = list(map(int, input().strip().split()))
    n, nums = line[0], line[1:]
    if n == 0:
        break
    print(is_jolly(nums))

2016/10/21 11:05

디디

무조건 jolly가 나오려면 일정한 규칙이 나올수밖에 없군요... 대단하십니다! - GunBang, 2016/12/20 23:12
def jolly?(seq)     
    differences = seq.drop(1).inject(seq.take(1)) do |result, elem|     
        prev = result.pop
        result << (prev - elem).abs
        result << elem
        result
    end
    differences.pop
    differences.sort == (1 .. (seq.length-1)).to_a
end

data_set = STDIN.read.split(/[\r\n]/)

data_set.each do |data|
    if jolly? data.split(/\s+/).drop(1).map(&:to_i)
        puts "Jolly"
    else
        puts "Not jolly"
    end
end

2014/03/10 18:41

Kim Jaeju

#!/usr/bin/python

import os
import sys

def main():
    if len(sys.argv) is 1:
        print "set input file"

    else:
        f = open(sys.argv[1],'r')
        lines = f.readlines()
        for line in lines:
            n = int(line.split()[0])
            check = [0] * (n-1)
            for i in range(2, n+1):
                abscha=abs(int(line.split()[i])-int(line.split()[i-1]))
                if abscha < n:
                    check[abscha-1] = 1
            gob = 1
            for i in range(0, n):
                gob=gob * int(check[0])
            if gob == 1:
                print "Jolly"
            else:
                print "Not jolly"

if __name__ == '__main__':
    main()
    sys.exit(0)

2014/03/11 03:26

sungho

clojure

(def not-nil? (complement nil?))


(defn ??-coll? [?? coll]
  (->> coll
       (reduce #(when (and %1 (= (?? %1) %2)) %2))
       not-nil?))


(def dec-coll? (partial ??-coll? dec))


(defn jolly? [coll]
  (->> coll
       (partition 2 1)
       (map #(Math/abs (apply - %)))
       dec-coll?))


(map jolly? [[1 4 2 3]
             [1 4 2 -1 6]])

;=> (true false)

2014/03/31 00:45

김 은평

[파이썬]

def Jolly(l):
    buff = []
    i = 1
    while i < len(l):
        buff.insert(i, abs(l[i-1] - l[i]))
        i += 1
    buff = list(set(buff))

    if buff[0] == 1 and buff[-1]*(buff[-1]+1)/2 == sum(buff):
        print "Jolly"
    else:
        print "Not Jolly"


n1 = [4,1,4,2,3]
n2 = [5,1,4,2,-1,6]

Jolly(n1)
Jolly(n2)
Jolly
Not Jolly

2014/04/18 15:02

Starleaguer

파이썬입니다.

1부터 n-1까지의 값을 모두 가지고 있어야 한다는 조건이 있어서 비트배열을 이용해 보았습니다.

def jolly(s):
    s = map(int, s.split()[1:])
    m = [False] * (len(s)-1)
    for i in range(len(s)-1):
        idx = abs(s[i]-s[i+1])-1
        if idx < len(m): 
            m[idx] = True
    return len(m) == m.count(True) and "Jolly" or "Not jolly"


print jolly("4 1 4 2 3")
print jolly("5 1 4 2 -1 6")

2014/05/02 15:51

pahkey

def jolly(n, l):
    return "Jolly" if sorted([abs(l[i]-l[i+1]) for i in range(n-1)]) == range(1, n) else "Not jolly"

while True:
    line = [int(x) for x in raw_input().split()]
    n, l = line[0], line[1:]

    if n == 0:
        break

    print jolly(n, l)

2014/05/03 08:41

handrake

파이썬 3.4 입니다. 풀고나니 1부터 n-1까지의 값을 모두 가지고 있어야 한다는 조건을 활용하질 못 했네요

def call_jol(data):
    diff = []
    decision_num = 0
    call = 'jolly'
    for x in range(len(data)-1):
        diff_ele = abs(data[x+1]-data[x])
        diff.append(diff_ele)
    for x in range (len(diff)):
        if diff[x] in data:
            pass
        else:
            decision_num += 1
    if decision_num != 0:
        call = 'Not jolly'
    return call

data = list(map(int,input("Enter your numbers.\n").split(" ")))
print (call_jol(data))

2014/09/24 19:37

돌구늬ㅋ~썬

package my;

import java.util.Scanner;

public class T {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("수열 수 입력:");
        String temp =in.nextLine();
        String[] t= temp.split(" ");
        int[] arr= new int[t.length];
        for(int i=0;i<t.length;i++){
            arr[i]=Integer.parseInt(t[i]);
        }

        int base=arr[0]-1;
        String result="jolly";
        for(int i=1;i<arr.length-1;i++){
            int cal = 0;
            if(arr[i]>arr[i+1]){
                cal=arr[i]-arr[i+1];
            }else{
                cal=arr[i+1]-arr[i];
            }
            if(base!=cal){
                result="Not jolly";
            }
            base-=1;
        }

        System.out.println(result);

    }
}

2014/10/14 15:03

임시

파이썬 입니다~ 첫번째 것은 set을 활용, 두번째 것은 길가의 풀님 꺼를 배껴봤습니다~(개악버젼이네요ㅎㅎ;;)

class Jolly:
    def __init__(self,a,b):
        self.n_lst = range(1,a)
        self.lst = b
    def start(self):
        x_lst = []
        for i in range(len(self.lst)-1):
            numb = self.lst[i] - self.lst[i+1]
            x_lst.append(abs(numb))
        set_a = set(self.n_lst)
        set_b = set(x_lst)
        if set_a & set_b == set_a: print "Jolly"
        else: print "Not Jolly"

test = Jolly(4, [1,4,2,3])
test.start()

class Jolly:
    def __init__(self,a,b):
        self.f_numb = a-1
        self.lst = b
    def start(self):
        x = [False] * self.f_numb
        for i in range(len(self.lst)-1):
            a = abs(self.lst[i] - self.lst[i+1]) - 1
            if a < len(x):
                x[a] = True
        check = True
        for i in x:
            if x[i] == False: check = False
        if check == True:
            print "Jolly"
        else: print "Not Jolly"

test = Jolly(4, [1,4,2,3])
test.start()

2014/11/15 23:05

jo dong hyun

Python으로 작성을 했는데... 다른분들 풀이 보니까 제가 너무 예제에 대해서만 생각 한것 같네요 방법은 인근 숫자들끼리 빼기한 값들을 List로 만들고 그 List가 N을 나타내는 제일 앞의 숫자와 제일 큰 숫자를 제외한 input 숫자들과 동일하면 Jolly를 나타내게 했습니다. 즉 4,1,4,2,3 중에서 단지 개수만 나타내는 제일앞의 4를 제외하고 나머지 1,4,2,3 중에 제일 큰 숫자인 4를 제외하는 것입니다. 빼기일테니 제일 큰숫자는 없는게 맞겠죠?

def Jolly (InputList):
    JJList = InputList[1:]
    Number = len(JJList)
    SubList=[]

    while Number-1:
        Number -= 1
        Sub = abs(JJList[Number-1] - JJList[Number])
        SubList.append(Sub)

    SubList.sort() #뺀값들만 모아서 Sort하여 정렬
    JJList.sort()
    JJList.pop()#빼기를 하게 되므로 최대값은 나올수가 없다. 때문에 sort한다음 pop을하여 마지막 숫자(Input List중 최대값)를 빼낸다.

    if SubList == JJList: print("Jolly")
    else : print("Not Jolly")

Jolly([4,1,4,2,3])
Jolly([5,1,4,2,-1,6])

2014/12/19 23:59

kong byongsoo

python 입니다.

import unittest

def func(s, result="Jolly"):
  l = s.split(" ")
  n = int(l.pop(0)) 
  for i in range(n-1):
    if abs(int(l[i]) - int(l[i+1])) >= n : result = "Not Jolly"
    print abs(int(l[i]) - int(l[i+1]))
  return result

class Test(unittest.TestCase):
  def test1(self):
    self.assertEqual('Jolly', func('4 1 4 2 3'))
    self.assertEqual('Not Jolly', func('5 1 4 2 -1 6'))

if __name__ == "__main__":
  unittest.main()

2015/01/11 21:10

Sang Brian

루비입니다.

def jolly_jumpers?(array)
  array.each_cons(2).map{|(a,b)| (a - b).abs }.sort == [*1...array.size]
end

puts jolly_jumpers?([1, 4, 2, 3]) ? "Jolly" : "Not Jolly"
puts jolly_jumpers?([5, 1, 4, 2, -1, 6]) ? "Jolly" : "Not Jolly"

2015/01/14 11:57

Shim Won

C#으로 작성했습니다. 1. 문제에서 요구하는 code는 input 한 줄, output 한 줄 출력하는 게 아닌지요? sample은 input을 한꺼번에 받는 듯이 보여서 여쭤보았습니다. 저는 일단 가장 앞 줄에 정해진 n을 찾은 후에 나머지 숫자를 list에 집어 넣고 n과 list의 count를 비교했습니다. 다음에 list에 있는 숫자들 중에 1보다 작거나 n-1보다 큰 숫자는 무조건 다 없앴습니다. 그럼 당연히 1에서 n-1까지 숫자가 list에 남겠죠. 그리고 그 list의 count를 n-1과 비교했습니다. 2. BitArray에 i와 i+1의 차잇값을 저장하였습니다.

using System;
using System.Collections;
using System.Collections.Generic;

        public bool IsJollyJumper(List<int> inputs)
        {
            var bits = new BitArray(inputs.Count);
            for (int i = 0; i < inputs.Count - 1; i++)
            {
                var diff = Math.Abs(inputs[i] - inputs[i + 1]);
                if (diff < 1 || diff >= inputs.Count || bits.Get(diff)) return false;
                bits.Set(diff, true);
            }
            return true;
        }

2015/01/22 19:55

Straß Böhm Jäger

coding by python beginner

def chkJolly(l):    
    if l[0] == 0: return False  
    offset = []; chk_list = l[1:]
    for i in range(l[0]-1): offset.append( abs(chk_list[i] - chk_list[i+1]) )
    return 'Jolly' if len( [x for x in offset if x not in chk_list] ) == 0 else 'Not Jolly'

while True:
    rs = chkJolly( list( map( int, input().split() ) ) )
    if rs: print(rs)
    else: break;

2015/01/26 17:45

vegan

Using python

a = [1,3,6,5,9]

def Jolly(a):
    b = []
    for i in xrange(len(a)-1):
        b.append(abs(a[i]-a[i+1]))
    b.sort()
    for i in range(len(b)-1):
        if b[0] != 1:
            return "Not Jolly"
        elif b[i]+1 != b[i+1]:
            return "Not Jolly"
    return "Jolly"

print Jolly(a)

2015/04/01 20:42

freeefly

    Sub Main()
        Dim d() As Integer = Array.ConvertAll(Split(Console.ReadLine, " "), Function(n As String) CInt(Val(n)))

        Dim c As Integer = Math.Abs(d(0) - d(1))
        Dim result As Boolean = True

        For i As Integer = 1 To d.Length - 1
            Dim a As Integer = Math.Abs(d(i - 1) - d(i))

            If i > 1 And Math.Abs(a - c) <> 1 Then
                result = False
                Exit For
            End If

            c = a
        Next

        Console.WriteLine(IIf(result, "Jolly", "Not Jolly"))

        Console.ReadLine()
    End Sub

2015/06/17 23:37

Steal

insertion = input(); nn = int(insertion[0]); insertion = insertion[2:]
palette = []; insertion = list(insertion.split(" "))
for i in range(0, len(insertion)):
    insertion[i] = int(insertion[i])

for ii in range(0, (len(insertion)-1)):
    palette.append(abs(insertion[ii] - insertion[ii+1]))
palette = list(set(sorted(palette)))

if len(palette) == (len(insertion) - 1):
    print("Jolly")
else:
    print("Not Jolly")

Python 3.4로 작성했습니다. 별도로 클래스를 만들지는 않고, 그냥 쭉 절차적으로 작성해 보았습니다.

먼저, 입력된 값에서 제일 앞의 수는 사실상 의미가 없으므로(배열 혹은 리스트의 원소 개수를 다시 풀어 주는 것이므로) 잘라냈습니다. 'nn'이라는 변수로 할당해 주기는 했지만 굳이 쓰지는 않을 것입니다. 그런 다음, 리스트 내 각 인접 원소들끼리의 차의 절대값으로 이루어진 리스트를 하나 만들고, 거기서 중복되는 수를 지울 수 있도록 'list(set(원래의 리스트)' 구문으로 처리했습니다. 그렇게 하면 새롭게 얻어지는 리스트인 'palette'는, 중복 없이 첫 리스트 원소들 간의 차의 절대값으로만 이루어진 오름차순 리스트가 될 것입니다. 그리고 이 리스트 palette의 len() 값이 n-1, 즉 len(첫 리스트) - 1 이 된다면 "Jolly"를 출력할 조건을 만족하게 됩니다.

시험 결과 적절히 출력할 수 있었습니다.

2015/10/06 14:38

박재우

def jolly(l):
    ptrn=[x-x for x in range(1,len(l))]
    for i in range(0,len(l)-1):
        d=abs(l[i]-l[i+1])-1
        if d>=len(ptrn) or ptrn[d]>0:return "Not Jolly"
        ptrn[d]+=1
    return "Jolly"

def jolly2(l):
    n=len(l)
    return "Jolly" if sorted([abs(l[i]-l[i+1]) for i in range(n-1)])==range(1,n) else "Not Jolly"

print jolly2([1,4,2,3])

2015/11/24 22:09

김 매미

ns = [1,4,2,3]
print ('Not Jolly','Jolly')[{abs(a-b) for a,b in zip(ns[1:],ns[:-1])}==set(range(1,len(ns)))]

2016/01/19 17:26

상파

Ruby

seqs = -> { (gets('0').split(/\n/)-['0']).map {|e| e.split.map &:to_i} }
is_j = ->n,seq { ([*1..n-1] - seq.each_cons(2).map {|a,b|(a-b).abs}).empty? }
chk_jj = -> { puts seqs[].map {|e| n,*seq=e; is_j[n,seq]? "Jolly":"Not Jolly" } }

Test

expect(is_j[4, [1,4,2,3]]).to eq true
expect(is_j[5, [1,4,2,-1,6]]).to eq false
# stdin/out test
$stdin = StringIO.new("4 1 4 2 3\n5 1 4 2 -1 6\n0\n")
expect { chk_jj.call }.to output("Jolly\nNot Jolly\n").to_stdout

Output

#=> chk_jj[]
4 1 4 2 3
5 1 4 2 -1 6
0
"Jolly"
"Not Jolly"

2016/02/26 08:12

rk

while __name__ == '__main__':
    inpt = int(input('>>>'))
    if not inpt: continue
    nums = []
    for x in range(inpt):
        nums.append(int(input('>>>>>>')))
    result = set(abs(x-y) for x, y in zip(nums, nums[1:]))
    jumper_set = set(x for x in range(1,len(nums)))
    if jumper_set == result: print('Jolly')
    else: print('Not jolly')

파이썬 3.5.1

2016/04/15 00:49

Flair Sizz

    public boolean isJolly(int[] array){
        int difference = 0 ;
        int isJolly[] = new int[array[0]];
        for(int i = 1 ; i < array.length-1 ;i++) {
            difference = (int)Math.abs(array[i] - array[i+1] );
            if(difference > 0 && difference <= array.length-1 ){
                if(isJolly[difference] == 1)
                    return false;
                else
                    isJolly[difference] += 1;
            }

        }
        return true;

    }

2016/04/16 19:45

xeo

# 파이썬3.5.1
def jolly(n,j):
    check = []
    for i in range(n-1,0,-1):
        if abs(j[n-i-1]-j[n-i]) == i:
            check.append(True)
    return bool(check)

a = input().split()
n,j = int(a[0]),list(map(int,a[1:]))
if jolly(n,j):
    print('Jolly')
else:
    print('Not jolly')

2016/04/22 22:35

차우정

Python 3.4.4

data1 = [4, 1, 4, 2, 3]
data2 = [5, 1, 4, 2, -1, 6]

def jolly(data):
    return {abs(x[0] - x[1]) for x in zip(data, data[1:])} == set(range(1, len(data)))

print(jolly(data1[1:]))
print(jolly(data2[1:]))

2016/05/09 15:13

SanghoSeo

//java 정렬해서 차이가 1보다 크면 not jolly

Scanner in = new Scanner(System.in);
        System.out.print("수열 수 입력:");
        String temp = in.nextLine();
        String[] data = temp.split(" ");
        int data_size = Integer.parseInt(data[0]);

        long delay = System.currentTimeMillis();
        Arrays.sort(data);
        boolean is_valid = true;
        for (int i = 1; i < data_size; i++) {
            if (i == 1) { // 사이즈 받는 첫 배열은 비교안함
                continue;
            }
            if (Integer.parseInt(data[i]) - Integer.parseInt(data[i - 1]) > 1) {
                is_valid = false;
                break;
            }
        }
        System.out.println(is_valid ? "Jolly" : "Not jolly");

        in.close();

2016/06/08 16:12

이승용

단순 구현 문제네요. 시간복잡도 O(n) 입니다. [C++]

#include <iostream> 
#include <cstdlib> 
#include <cstdio> 
using namespace std; 

int chk[3333]; 
int a[3333]; 

int main(){
    int n; 
    scanf("%d",&n);  
    for (int i = 0; i < n; i++){
        scanf("%d",&a[i]);  
    }
    for (int i = 0; i < n-1; i++){
        chk[abs(a[i]-a[i+1])] = 1;  
    }
    for (int i = 1; i <= n-1; i++){
        if (!chk[i]){
            printf("Not jolly\n"); 
            return 0;  
        }
    }
    printf("Jolly\n");  
    return 0; 
}

2016/06/08 20:32

iljimae

import java.util.ArrayList;
import java.util.Scanner;

public class test {

    public static void main(String[] argv) {

        Scanner sc = new Scanner(System.in);

        boolean isJolly = true;
        int n = sc.nextInt();

        ArrayList<Integer> numList = new ArrayList<Integer>();

        for(int i = 0; i < n; i++){
            numList.add(sc.nextInt());
        }

        for(int i = 0; i < numList.size() - 1 ; i++){
            if(!numList.contains(Math.abs(numList.get(i) - numList.get(i+1)))){
                isJolly = false;

                break;
            }
        }

        if(isJolly){
            System.out.print("Jolly");
        }else{
            System.out.print("Not jolly");
        }

    }
}




2016/07/25 15:47

이 승준

#__author__ = 'Admin'

# def_name = check_jumper, input = length of the list, list / output = whether it is jumber or not, type of the result = strings
# what We need, how to organize this problem?
# first of all, should make the list of (1 ~ n-1)
#

def check_jumper(number, list):
    checker_list = []
    while number > 1:
        number -= 1
        checker_list.append(number)
    for check in range(1,len(list)):
        if abs(list[check-1]-list[check]) in checker_list:
            checker_list.remove(abs(list[check-1]-list[check]))
    if len(checker_list) == 0:
        return "jolly"
    else:
        return "not jolly"
print check_jumper(4,[1,4,2,3]) #result : jolly
print check_jumper(5,[1,4,2,-1,6]) #result : not jolly
print check_jumper(6,[1,6,10,13,15,14]) #result : jolly
print check_jumper(3,[1,2,6,7]) #result : not jolly

2016/08/18 00:02

Kim Seong Hyeon

public void JollyJumperDiscriminator(int[] input)
        {
            int length = input.Length;
            int[] nNum = new int[length];
            int[] differences = new int[length - 1];

            for (int i = 0; i < length; i++)
            {
                nNum[i] = i + 1;
            }

            nNum = (from Nums in nNum
                    orderby Nums ascending
                    select Nums)
                    .ToArray();

            for (int j = 0; j < input.Length - 1; j++)
            {
                differences[j] = Math.Abs(input[j + 1] - input[j]);
            }

            differences = (from Nums in differences
                           orderby Nums ascending
                           select Nums)
                          .ToArray();
            int equalcount = 0;

            for (int k = 0; k < differences.Length; k++)
            {
                if (differences[k] == nNum[k])
                {
                    equalcount++;
                }
            }

            if (equalcount == differences.Length)
            {
                Console.WriteLine("Jolly Jumper");
            }
            else
            {
                Console.WriteLine("Not Jolly Jumper");
            }

대충 짜서 코드도 좀 더럽(?)고 무엇보다 입력 방식이 다릅니다ㅋㅋ 다만 결과는 같아요

2016/08/29 02:31

이규민

def jolly_jumper(val):
    va = val.strip().split('\n')
    for v in va:
        vi = v.split(' ')
        if vi[0] == '0':
            break
        src = vi[1:]
        jolly = set([abs(int(src[x]) - int(src[x + 1])) for x in range(0, len(src) - 1)]) \
                - set(range(1, int(vi[0])))
        print('Jolly' if len(jolly) == 0 else 'Not jolly')

jolly_jumper('''
4 1 4 2 3
5 1 4 2 -1 6
''')

Python 3.5.2에서 작성하였습니다.

2016/11/28 12:56

Yeo HyungGoo

list_ = list()
while list_ == [] or list_[-1][0] != '0':
    list_ += [input().split(' ')]
list_.pop(-1)
for z in range(len(list_)):
    if [ x for x in range(1,len(list_[z])-1)] ==\
       sorted([abs(int(x[y]) - int(x[y+1])) for x in list_ for y in range(1,len(x)-1)]):
        print('Jolly')
    else:
        print('Not Jolly')

#### 2016.12.20 D-429 ####

2016/12/20 22:53

GunBang

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int n;
void main() {
    scanf("%d", &n);
    int *arr = (int*) malloc (sizeof(int) * n);
    for(int i=0;i<n;i++)
        scanf("%d", &arr[i]);

    int jolly = 0;
    for(int i=0;i<n;i++)
        for(int j=0;j<n-1;j++)
            if(i == abs(arr[j] - arr[j+1])) {
                jolly++;
                break;
            }

    if(jolly == n-1)
        printf("jolly \n");
    else 
        printf("not jolly\n");
}

2017/01/11 15:23

코딩초보

def joly_jumper(data):
    n=data[0]
    data=data[1:]
    if n==0:
        return "Jolly"
    dic={}
    for i in range(len(data)-1):
        dic[abs(data[i]-data[i+1])]=1
    data=list(dic.keys())
    data.sort()
    if data==list(range(1,n)):
        return "Jolly"
    return "Not jolly"
joly_jumper([5, 1, 4, 2, -1, 6])

2017/02/14 02:36

김구경


import java.util.Arrays;
import java.util.Scanner;

public class Jolly_Jumper {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] arr;
        int[] jol;

        for(int num = scan.nextInt(); num != 0; num = scan.nextInt()){
            arr = new int[num];
            jol = new int[num-1];

            for(int i = 0; i < num; i++){
                arr[i] = scan.nextInt();
            }

            for(int i = 0; i < num-1; i++){
                jol[i] = Math.abs(arr[i+1]-arr[i]);
            }
            Arrays.sort(jol);

            for(int i = 1; i < num; jol[i-1] = 0, i++){
                if(i != jol[i-1]){
                    System.out.println("Not Jolly");
                    break;
                }

            }
            if(jol[num-2] == 0)
                System.out.println("Jolly");

            arr=null;
            jol=null;
        }


    }

}

2017/02/20 17:19

KimSeonbin

MATLAB 입니다. input, str2num 등으로 입력받고, diff, sort, sum, abs 등의 함수를 이용했습니다.

while 1
    input_arr=str2num(input('input : ','s'));

    n=input_arr(1);
    if n==0
        disp('finished');
        return
    end
    if sum(abs(sort(abs(diff(input_arr(2:end))),'ascend') - (1:1:n-1)))==0
        disp('Jolly');
    else
        disp('Not jolly');
    end
end

2017/03/03 12:34

c0din9

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.IntStream;

import static java.lang.System.in;

public class JollyJumpers {

    public static void main(String[] args) {
        Scanner sc = new Scanner(in);

        List<List<Integer>> nn = new ArrayList<>();

        while (sc.hasNextLine()) {
            int j = sc.nextInt();
            if (j == 0) break;
            List mm = new ArrayList(3000);
            for (int i = 0; i < j; i++) {
                mm.add(sc.nextInt());
            }
            nn.add(mm);
        }

        for (int i = 0; i < nn.size(); i++) {
            jolly(nn.get(i).size(), nn.get(i));
        }
    }

    private static void jolly(Integer n, List<Integer> nn) {
        List<Integer> l = new ArrayList<>();
        nn.stream().reduce((a, b) -> {
            l.add(Math.abs(a - b));
            return b;
        });
        System.out.println(IntStream.range(1, n).allMatch(i -> l.contains(i)) ? "Jolly" : "Not jolly");
    }
}

2017/03/17 17:47

genius.choi

import java.util.*;

public class jolly_jumper {

    public static void jolly_def(String nums){
        String [] array_nums = nums.split(" "); // {"1","4","2","3"}

        int [] int_nums = new int[array_nums.length];
        for(int k =0;k<array_nums.length;k++){int_nums[k]=Integer.parseInt(array_nums[k]);}
        // int_nums = {1,4,2,3}

        int [] minus_nums = new int[(array_nums.length)-1];
        for(int i =0;i<(array_nums.length)-1;i++){minus_nums[i] = Math.abs(int_nums[i+1]-int_nums[i]);}
        Arrays.sort(minus_nums);

        int [] filter_nums = new int[array_nums.length-1];
        for(int l=0;l<array_nums.length-1;l++){filter_nums[l] = l+1;}

        if (Arrays.equals(minus_nums,filter_nums)){System.out.println("jolly");}
        else{System.out.println("not jolly");}  
    }

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String nums = sc.nextLine(); // 1 4 2 3
        jolly_jumper.jolly_def(nums);       
    }
}

2017/03/26 19:20

Kim Da Seul

Python 3.6.1

def check_jolly(n, in_list):
    in_num = list(map(int, in_list))
    for i in range(1, n):
        diff = abs(in_num[i - 1] - in_num[i])
        if diff == i or diff == n - i:
            pass
        else:
            return print("Not jolly")
    return print("Jolly")


in_str = input("Enter number with space separater: ")
in_list = in_str.split()
in_length = int(in_list.pop(0))

if in_length == len(in_list):
    check_jolly(in_length, in_list)
else:
    print("Array numbers does not agree with arrays")

2017/05/20 06:15

예강효빠

다른 풀이들을 보면 zip(list[0:],list[1:]) 의 쌍으로 len(list)-1 만큼 묶어서 for loop 를 돌리는데 그렇게 하면 max 3000개의 수열일 경우 2999 까지 루프를 돌게 됩니다. 어차피 for 문을 돌때 비교를 해서 jolly jumper 의 조건을 만족시키지 못하면 무조건 not jolly 로 리턴하고 끝내면 되기에 순차적으로 비교하는 것이 loop 를 적게 도는 측면에서 유리합니다. - 예강효빠, 2017/05/20 07:06
루프 적게 도는게 좋은건 이해가 가는데 왜 diff == i or diff == n - i: 이거만 확인하면 되는건가요? - 빗나감, 2017/12/14 22:54
python3부터는 zip이 list가 아닌 iterator를 반환하기 때문에 `for i in zip():`을 사용해도 루프를 한 번만 돕니다. - sodii, 2017/12/15 15:20

파이썬 3에서 작성하였습니다.

코드:

class jollyJumpers:
    inputList = []
    inputCount = 0
    def __init__(self, inputList):
        self.inputList = inputList
    def printList(self):
        print(self.inputList)
    def checkJollyJumpers(self):
        totalCount = self.inputList.pop(0) - 1
        inputSet = set()
        setCount = 0
        for i in range(1, len(self.inputList)):
            inputSet.add(abs(self.inputList[i-1] -self.inputList[i]))
            setCount += 1
            if abs(self.inputList[i-1] -self.inputList[i]) > self.inputCount and  setCount != len(inputSet):
                print ("Not Jolly")
                return

        print ("Jolly")


if __name__ == "__main__":
    jolly = jollyJumpers([5, 1, 4, 2, -1, 6])
    jolly.checkJollyJumpers()

2017/05/29 11:46

Mike

C-Sharp

using static System.Console;
using System.Collections.Generic;
using System.Linq;
using System;
using static System.Math;

class Program
{
    static void Main()
    {
        List<string> sampleList = new List<string> { "4 1 4 2 3", "5 1 4 2 -1 6" };
        sampleList.ForEach(n => WriteLine(IsJolly(n)));
    }

    static string IsJolly(string str)
    {
        var n = Array.ConvertAll(str.Split(), int.Parse).Skip(1);
        var nAbs = n.Skip(1).Zip(n.Take(n.Count() - 1), (a, b) => Abs(a - b));
        return new HashSet<int>(nAbs.Skip(1).Zip(nAbs.Take(nAbs.Count() - 1), (a, b) => Abs(a - b))).Count() == 1? "Jolly" : "Not Jolly";
    }
}

2017/05/30 14:37

디디

def Jolly(Jollylist):
    subs = []
    for i in range(len(Jollylist)-1):
        subs.append(abs(Jollylist[i] - Jollylist[i+1]))
    judge = 0
    for i in range(len(Jollylist)-1):
        if sorted(subs)[i] == i+1:
            judge += 1
    if judge == len(Jollylist)-1:
        return 'Jolly'
    else:
        return 'Not Jolly'

숏코딩을 고민해봐야겠습니다...

2017/06/04 23:27

S ReolSt

javascript

var isJolly = function(line) {
    var input = line.split(" ");
    var size = input[0] || 0;
    if (size === 0) return;

    return distancesOf(input.slice(1)).sort().every((v, i) => v === (i + 1));
};

var distancesOf = function(array) {
    return Array.from(Array(array.length - 1), (v, i) => Math.abs(array[i + 1] - array[i]))
}

console.log(isJolly("4 1 4 2 3") ? "Jolly" : "Not Jolly");
console.log(isJolly("5 1 4 2 -1 6") ? "Jolly" : "Not Jolly");

2017/06/20 17:19

funnystyle

def is_jolly(n, seq):    
    tups = list(zip(seq[:-1], seq[1:]))
    diff = [abs(tup[0]-tup[1]) for tup in tups]    
    return sorted(diff) == list(range(1, n))

input = [[4, 1, 4, 2, 3], [5, 1, 4, 2, -1, 6]]
for seq in input:
    if seq[0] == 0:
        break

    if is_jolly(seq[0], seq[1:]):
        print('Jolly')
    else:
        print('Not jolly')

2017/07/05 07:52

Noname

Python 3으로 풀었습니다.

def check_jolly_jumper(s):
    items = [int(c) for c in s.split(' ')[1:]]
    diffs_set = {abs(items[i - 1] - items[i]) for i in range(1, len(items))}
    # print(diffs_set)

    if len(diffs_set) == len(items) - 1\
            and min(diffs_set) == 1\
            and max(diffs_set) == len(items) - 1:
        return 'Jolly'
    else:
        return 'Not jolly'

2017/07/16 22:54

SOUP

def jolly(list_a):
    n = list_a[0]
    a = [i for i in range(1,n)]
    list_b = list_a[1:]
    dff = []
    for i in range(len(list_b)-1):
        dff.append(abs(list_b[i]-list_b[i+1]))
    sort_dff = sorted(dff)
    if a == sort_dff:
        print("Jolly")
    else:
        print("Not Jolly")

a = [4,1, 4, 2, 3]
b = [5, 1, 4, 2, -1, 6]

jolly(a)
jolly(b)

2017/08/08 17:13

이현우

C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main(int argc, char* argv[])
{
    if(argc <6 || atoi(argv[1]) != argc-2)
    {
        printf("input error\n");
        return 0;
    }
    int arrcount = argc-2;
    int arr[arrcount];

    for(int i=0;i<arrcount;i++)
        arr[i] = atoi(argv[i+2]);
    /*
    for(int i=0;i<arrcount;i++)
        printf("%d ",arr[i]);
    */

    //---------------------------------------
    int tmparr[arrcount-1];
    int flag = 0;
    for(int i=0;i<arrcount-1;i++)
        tmparr[i] = abs(arr[i+1]-arr[i]);
    for(int i=0;i<arrcount-1;i++)
        printf("%d ",tmparr[i]);
    printf("\n");

    int tmp = 0;
    for(int i=0;i<arrcount-2;i++)
    {
        // tmparr check !
        if(i==0)
            tmp = tmparr[i+2] - tmparr[i+1];
        else if(i>0)
        {
            int tmp2 = tmparr[i+2] - tmparr[i+1];
            if(tmp-tmp2==1)
                tmp = tmp2;
            else
            {
                printf("Not Jolly\n");
                return 0;
            }
        }

    }
    printf("Jolly\n");

}

2017/08/10 12:56

임꺽정

C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main(int argc, char* argv[])
{
    if(argc <6 || atoi(argv[1]) != argc-2)
    {
        printf("input error\n");
        return 0;
    }
    int arrcount = argc-2;
    int arr[arrcount];

    for(int i=0;i<arrcount;i++)
        arr[i] = atoi(argv[i+2]);
    /*
    for(int i=0;i<arrcount;i++)
        printf("%d ",arr[i]);
    */

    //---------------------------------------
    int tmparr[arrcount-1];
    int flag = 0;
    for(int i=0;i<arrcount-1;i++)
        tmparr[i] = abs(arr[i+1]-arr[i]);
    for(int i=0;i<arrcount-1;i++)
        printf("%d ",tmparr[i]);
    printf("\n");

    int tmp = 0;
    for(int i=0;i<arrcount-2;i++)
    {
        // tmparr check !
        if(i==0)
            tmp = tmparr[i+2] - tmparr[i+1];
        else if(i>0)
        {
            int tmp2 = tmparr[i+2] - tmparr[i+1];
            if(tmp-tmp2==1)
                tmp = tmp2;
            else
            {
                printf("Not Jolly\n");
                return 0;
            }
        }

    }
    printf("Jolly\n");

}

2017/08/10 12:57

임꺽정

def jollyCh(nums):
    nums = nums.split(' ')
    check_arr = []
    for idx, num in enumerate(nums) :
        if idx == (len(nums)-1):
            break
        check_arr.append(abs(int(nums[idx+1])-int(num)))
    print(check_arr)

    for num in check_arr:
        if num>(len(nums)-1) or num <1:
            return 'Not Jolly'
    return 'Jolly'



print(jollyCh('4 1 4 2 3'))
print(jollyCh('5 1 4 2 -1 6'))

2017/08/23 09:44

piko

package codingdojang;

import java.util.Scanner;

public class ex37 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);

    String parse[] = sc.nextLine().split(" ");

    int num[] = new int[parse.length];

    for(int i=0; i<parse.length; i++) {
        num[i] = Integer.parseInt(parse[i]);
    }

    for(int i=1; i<num.length; i++) {
        if(num[i] - num[i-1] >= num.length) {
            System.out.println("Not Jolly");
            return;
        }
    }

    System.out.println("Jolly");
}

}

2017/10/08 13:57

이병호

n=str(input())
f=n.split(' ')
c=int(f.pop(0))
result=[]
for x in range(c-1):
    d=abs(int(f[x+1]))-abs(int(f[x]))
    result.append(abs(d))
jol=[y for y in range(1,c)]
result.sort()
if result==jol:
    print('Jolly')
else:print('Not jolly')

2017/12/04 01:41

강상욱

import java.util.ArrayList; import java.util.Scanner;

public class test {

public static void main(String[] argv) {

    Scanner sc = new Scanner(System.in);

    boolean isJolly = true;
    int n = sc.nextInt();

    ArrayList<Integer> numList = new ArrayList<Integer>();

    for(int i = 0; i < n; i++){
        numList.add(sc.nextInt());
    }

    for(int i = 0; i < numList.size() - 1 ; i++){
        if(!numList.contains(Math.abs(numList.get(i) - numList.get(i+1)))){
            isJolly = false;

            break;
        }
    }

    if(isJolly){
        System.out.print("Jolly");
    }else{
        System.out.print("Not jolly");
    }

}

}

2017/12/04 16:01

떼디

while True:
    nums=list(map(int, input().split()))
    if len(nums)>nums[0]:
        nums=nums[1:nums[0]+1]
        nums=list(zip(nums,nums[1:]))
        break
diff=set([i for i in range(1, len(nums)+1)])
diffs=set([abs(x-y) for x,y in nums])
if diff-diffs:
    print('Not jolly')
else:
    print('Jolly')

예전에 본 lv1문제에서 어떤분이 zip쓰셨던게 기억나서 zip써봤습니다.

while True:
    nums=list(map(int, input().split()))
    if len(nums)>nums[0]:
        nums=nums[1:nums[0]+1]
        nums=list(zip(nums,nums[1:]))
        break

diff=set()
for x,y in nums:
    if abs(x-y) in diff:
        print('Not jolly')
        break
    else:
        diff.add(abs(x-y))
else:
    print('Jolly')

다른분 하신거 보다가 첫번째코드처럼 하면 비교해야 할 숫자가 많으면 비효율적이라고 하시던데 맞는말인거 같아서 수정했습니다.

2017/12/14 22:38

빗나감

input = '''4 1 4 2 3
5 1 4 2 -1 6'''
input = input.split('\n')
for i in range(len(input)):
    input = input[i]
    input = input.split()
    n = int(input.pop(0))
    if n - 1 == len([i for i in range(len(input)-1) if abs(int(input[i])-int(input[i+1])) < n]):
        print('Jolly')
    else: 
        print('Not jolly')


2017/12/29 21:32

김호현

파이썬 입니다.

#data 
data1 = [1, 4, 2, 3]
data2 = [1, 4, 2, -1, 6]

#main
def jolly(data):
    diffs = set()
    for i in range(len(data) -1):
        diffs.add(abs(data[i]- data[i+1]))        

    return "Jolly" if diffs == set(range(1, len(data))) else "Not Jolly"  

print(jolly(data1))
print(jolly(data2))

2018/01/03 14:32

yudong

파이썬 3.6

# 수열을 리스트 자료형으로 입력 받습니다.
def inputdata(sequencelist):
    try:
        n = input(" ▶ 수열의 개수 n을 입력하세요 :")
        x = [input() for i in range(int(n))]
        x.insert(0,n)
        sequencelist.append(x)
        inputdata(sequencelist)
    except ValueError:
        print("정수를 입력하세요","\n")     

# 각 수열별로 조건에 맞는지 확인하여 결과를 출력 합니다.
def isjolly(sequencelist):
    for sequence in sequencelist:
        print(' '.join(sequence))
    print("\n")
    sub = 0
    string =''
    for sequence in sequencelist:
        n = int(sequence[0])
        if n == 0:
            print(sequence[0])
            return
        elif n == 1: print("Not jolly")
        else:
            for i,value in enumerate(sequence[1:]):
                if i+2 > n: pass
                elif value == '':
                    print("Not jolly")
                    string = 'Not jolly'
                    break
                else:
                    sub = abs(int(value)-int(sequence[i+2]))
                    if not str(sub) in sequence[1:n+1]:
                        print("Not jolly")
                        string = 'Not jolly'
                        break
            if string == 'Not jolly':
                string = ''
                pass
            else:
                print("Jolly")

if __name__ == "__main__":
    sequencelist = []    
    try:
        n = input(" ▶ 수열의 개수 n을 입력하세요 :")
        x = [input() for i in range(int(n))]
        x.insert(0,n)
        sequencelist.append(x)
        inputdata(sequencelist)
        print("==Jolly Jumpers!==") 
        print("\n")
        isjolly(sequencelist)
    except ValueError:
        print("정수를 입력하세요","\n")

*결과값

 ▶ 수열의 개수 n을 입력하세요 :4
1
4
2
3
 ▶ 수열의 개수 n을 입력하세요 :5
1
4
2
-1
6
 ▶ 수열의 개수 n을 입력하세요 :0
 ▶ 수열의 개수 n을 입력하세요 :4
5
6
2
4
 ▶ 수열의 개수 n을 입력하세요 :
정수를 입력하세요 

==Jolly Jumpers!==


4 1 4 2 3
5 1 4 2 -1 6
0
4 5 6 2 4


Jolly
Not jolly
0

2018/01/06 16:25

justbegin

import java.util.Scanner;

public class Search 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        int[] store = new int[num];
        int[] tf = new int[num-1];

        for(int i=0; i<num; ++i)
            store[i] = input.nextInt();

        for(int i=0; i<store.length-1; ++i)
        {
            int abs = Math.abs(store[i]-store[i+1]);
            for(int j=0; j<store.length; ++j)
            {
                if(abs == store[j])
                {
                    tf[i] =1;
                    break;
                }

            }
        }

        for(int i=0; i<tf.length; ++i)
        {
            if(tf[i] != 1)
            {
                System.out.println("Not Jolly");
                break;
            }
            if(i == tf.length-1 && tf[i] == 1)
                System.out.println("Jolly");
        }

    }
}

2018/01/11 18:45

최태훈

# 파이썬


def jolly_jumpers(i):
    i = i.split(" ")
    for m in range(1, int(i[0])):
        i[m] = abs(int(i[m]) - int(i[m+1]))
    set1 = set(range(1, int(i[0])))
    set2 = set(i[1:-1])
    if set1 == set2:
        return "Jolly"
    else:
        return "Not jolly"


while 1:
    input_sample = input("n, n개의 수, 사이는 blank, 종료는 0: ")
    if input_sample == "0":
        break
    print(jolly_jumpers(input_sample))

2018/02/06 21:00

olclocr

def jolly(a):
    n = a[0]
    a = a[1:]
    b = list()
    for i in range(len(a)-1):
        b.append(abs(a[i+1]-a[i]))
    b.sort()
    return b == list(range(1,n))


if jolly(list(map(int, input().split(' ')))):
    print("Jolly")
else:
    print("Not Jolly")

2018/02/08 15:08

김동하

flag_list=[]

num_line=int(input("입력하려는 라인의 갯수를 입력하세요\n"))
for line in range(num_line):
    num=input('숫자를 입력하세요\n')
    num_list=num.split(" ")
    check_set=set()
    for k in range(1,int(num_list[0])):
        check_set.add(k)
    difference_set=set()
    for g in range(len(num_list[1:])-1):
        difference=abs(int(num_list[1:][g])-int(num_list[1:][g+1]))
        difference_set.add(difference)
        difference_set=set(difference_set)
    for number in check_set:
        if number not in difference_set:
            flag_list.append(1)
            break
    if len(flag_list)!=(line+1):
        flag_list.append(0)

for flag in flag_list:
    if flag==0:
        print("Jolly")
    else:
        print("Not jolly")


2018/02/18 13:54

D B

import java.util.Arrays;
import java.util.Scanner;

public class JollyJumpers {

    public static boolean execute(int[] array){

        int[] array2 = new int[array.length-1];

        for(int i=0; i< array.length-1; i++){
            array2[i] = Math.abs(array[i] - array[i+1]);
        }
        Arrays.sort(array2);

        int check = 1;

        for(int i=0; i < array2.length; i++){

            if(array2[i] != check){
                return false;
            }
            check++;

        }

        return true;
    }

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] array = new int[n];

        for(int i = 0; i< n; i++){
            array[i] = sc.nextInt();
        }
        sc.close();
        System.out.println(execute(array) ? "Jolly" : "Not jolly");


    }
}

2018/04/03 20:14

김태훈

import numpy as np

a = input()
b= []
a_list = []
a  = a.split()
print(a)
c = a[0]
c = int(c)
for i in range(c):
    b.append(a[i+1])

for i in range(len(b)-1):
    a_list.append(i+1)

for i in range(len(b)-1):
    try:
        a_list.remove(abs(int(b[i]) - int(b[i+1])))
    except:
        continue
if a_list == []:
    print("Jolly")
else:
    print("Not jolly")

2018/04/04 11:59

최성범

python 3+

nums_txt = '4 1 4 2 3'
def is_jolly(input_num):
    l = [int(n) for n in input_num.split(' ')]
    l2 = l[1:]
    print(l2)
    for n in range(len(l2) - 1):
        m = abs(l2[n] - l2[n + 1])
        print(m)
        if l2.count(m) == 0:
            return 'Not jolly'
    return 'Jolly'


print(is_jolly(nums_txt))

2018/04/05 15:13

무명소졸


import java.util.Scanner;

public class Test{
 public static void main(String[] args){
  Scanner sc = new Scanner(System.in);
  String input = sc.nextLine();
  String [] arr1 = input.split(" ");

  int count=0,sum;

  if(arr1[0].equals("0")==false){
  for(int i =0; i<input.length();i++){
   if(input.substring(i,i+1).equals(" "))
    count++;
  }


  int [] arr2 = new int [count];
  sum = count;
  for(int j=0 ;count>0 ;j++){
   int a =Math.abs(Integer.parseInt(arr1[j])-Integer.parseInt(arr1[j+1]));
   if(a>count)
    break;
   else{
   arr2[a-1] = a;
   count--;
   }
  }

  for(int k=0;k<sum;k++){
  if(arr2[k]==(k+1))
   count++;
  else
   break;
 }
  if(count==sum)
   System.out.println("Jolly");
  else
   System.out.println("Not jolly");
 }

 }
}

2018/04/08 23:06

배혜민

// Jolly Jumpers
package main

import (
    "bufio"
    "fmt"
    "math"
    "os"
    "reflect"
    "sort"
    "strconv"
    "strings"
)

// getDiffSlice: 슬라이스 멤버의 숫자 차이로 구성된 슬라이스(sorted) 반환
func getDiffSlice(iSlice []int) []int {
    rst := []int{}
    for i := 0; i < len(iSlice)-1; i++ {
        rst = append(rst, int(math.Abs(float64(iSlice[i]-iSlice[i+1]))))
    }
    sort.Ints(rst)
    return rst
}

// isJolly: if aSlice == range [1..num) -> "Jolly" else "Not Jolly"
func isJolly(aSlice []int, num int) string {
    cmpSlice := []int{}
    for i := 1; i < num; i++ {
        cmpSlice = append(cmpSlice, i)
    }
    rst := "Not Jolly"
    if reflect.DeepEqual(aSlice, cmpSlice) {
        rst = "Jolly"
    }
    return rst
}

// parseInput
func parseInput() string {
    var iString, rst string
    for {
        // read a string line
        reader := bufio.NewReader(os.Stdin)
        iString, _ = reader.ReadString('\n')
        iString = strings.TrimSpace(iString)
        // split the string to a slice
        tmp := strings.Split(iString, " ")
        num, _ := strconv.Atoi(tmp[0])
        if num == 0 {
            break
        }
        aSlice := []int{}
        for _, v := range tmp[1:] {
            v2i, _ := strconv.Atoi(v)
            aSlice = append(aSlice, v2i)
        }
        // check if Jolly Jumber
        rst = rst + isJolly(getDiffSlice(aSlice), num) + "\n"
    }
    return rst
}

func main() {
    fmt.Println(parseInput())
}

2018/04/10 10:33

mohenjo

파이썬 3

datas = []
while True:
    inp = list(map(int,input('수열을 입력하세요(n a1 a2 a3 ... an) : ').split()))
    if inp[0] == 0:
        break
    datas.append(inp)

for data in datas:
    n = data.pop(0)
    if n != len(data):
        print('길이를 잘못 입력하셨습니다.')
    else:
        subs = [abs(data[i] - data[i + 1]) for i in range(n-1)]
        print('Jolly' if set(subs) == set(range(1, n)) else 'Not Jolly')

2018/04/12 14:13

charming

def jolly(mylist):
    n = mylist.pop(0)
    if n == 0 : return 0
    chalist = []
    for i in range(1,len(mylist)):
        if mylist[i] - mylist[i - 1] > 0 : chalist.append(mylist[i] - mylist[i-1])
        else : chalist.append((mylist[i] - mylist[i-1]) * (-1))
    if sorted(chalist) == list(range(1,n)) : return "Jolly"
    else: return "not jolly"

print(jolly([4, 1, 4, 2, 3]))
print(jolly([5, 1, 4, 2, -1,6]))
print(jolly([0, 1, 4, 2, -1,6]))

2018/04/17 15:33

yijeong

 let al = [4,1,4,2,3]
    let bl = [5,1,4,2,-1,6]

    function cal (x) {
      let list  = []
      let i = 1;
      while (i+1 < x.length){
        // console.log("i", i, "list",list)
        list.push(Math.abs(x[i+1] - x[i]))
        i++
      }
      list.sort().unshift(x[0])
      // console.log(list)
      return list
   }

   function match (x) {
     let judge = 0;
     for ( let i = 1; i < x.length; i++){
       x[i] === i ? "" : judge++;
      //  console.log("judge", judge)
     }
     return judge === 0 ? true : false
     }


     function jolly (x) {
       if (x[0] !== 0) {
         return match(cal(x))
       } else { return "no element"}
     }

     console.log(jolly(al))
     console.log(jolly(bl))

2018/04/20 10:52

Yungbin Kim

def Jolly(*nums):
    subtract = abs(nums[0] - nums[1])
    for i, minus in enumerate(nums[1:-1]):
        if abs(minus - nums[i + 2]) == subtract - 1: subtract -= 1
        else: return 'Not jolly'
    return 'Jolly'

Python 3이고 수열의 길이를 나타내는 첫 번째 수는 입력하지 않는다고 가정했습니다

2018/04/28 12:31

myyh2357

public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine()); // 배열길이 입력받음
        boolean[] sequence = new boolean[n]; 
        String[] nums = br.readLine().split(" ");

        for (int i=0, j=1; i<n-1; i++, j++) {
            int idx = Integer.parseInt(nums[i]) - Integer.parseInt(nums[j]); // 등차 계산
            if(Math.abs(idx) < n) 
                sequence[Math.abs(idx)] = true; // 등차번째 boolean 배열을 true로함
        }

        for (int i=1; i<n; i++) { // 등차가 0은 없으니 1부터
            if(!sequence[i]) { // 하나라도 false면 등차가 1~n-1까지 꽉차있지 않다는 뜻
                System.out.println("not jolly");
                break;
            }
            else if(sequence[i] && i == n-1)
                System.out.println("jolly");
        }
        System.out.println(Arrays.toString(sequence));
    }

코드가 좀 기네요
``````{.java}
public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine()); // 배열길이 입력받음
        boolean[] sequence = new boolean[n]; 
        String[] nums = br.readLine().split(" ");

        for (int i=0, j=1; i<n-1; i++, j++) {
            int idx = Integer.parseInt(nums[i]) - Integer.parseInt(nums[j]); // 등차 계산
            if(Math.abs(idx) < n) 
                sequence[Math.abs(idx)] = true; // 등차번째 boolean 배열을 true로함
        }

        for (int i=1; i<n; i++) { // 등차가 0은 없으니 1부터
            if(!sequence[i]) { // 하나라도 false면 등차가 1~n-1까지 꽉차있지 않다는 뜻
                System.out.println("not jolly");
                break;
            }
            else if(sequence[i] && i == n-1)
                System.out.println("jolly");
        }
        System.out.println(Arrays.toString(sequence));
    }

자바입니다. 코드가 좀 기네요

2018/05/03 11:18

정몽준

def isJollyJumpers(string):

    lst = []
    operands = string.split()
    length_of_string = int(operands[0])

    if length_of_string == 0:
        return '0'
    else:
        for number in operands[1:]:
            number_2 = int(number)
            lst.append(number_2)

    for idx in range(1,len(lst)):
        lst[idx] = lst[idx] - lst[0]

    lst[0] = 0

    for number in lst:
        if abs(number) > length_of_string - 1:
            return 'not jolly jump.'
            break
        else:
            if number == lst[-1]:
                return 'jolly jump.'

print(isJollyJumpers('4 1 4 2 3')) # 0 3 1 2
print(isJollyJumpers('5 1 4 2 -1 6')) # 0 3 1 -2 5
print(isJollyJumpers('7 1 4 7 5 4 2')) # 0 3 6 4 3 1

2018/05/06 11:46

최우성

import java.util.Scanner;

public class T {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("수열 수 입력:");
        String temp =in.nextLine();
        String[] t= temp.split(" ");
        int[] arr= new int[t.length];
        for(int i=0;i<t.length;i++){
            arr[i]=Integer.parseInt(t[i]);
        }

        int base=arr[0]-1;
        String result="jolly";
        for(int i=1;i<arr.length-1;i++){
            int cal = 0;
            if(arr[i]>arr[i+1]){
                cal=arr[i]-arr[i+1];
            }else{
                cal=arr[i+1]-arr[i];
            }
            if(base!=cal){
                result="Not jolly";
            }
            base-=1;
        }

        System.out.println(result);

    }
}

2018/05/14 15:48

聂金鹏

python 3.6.4

def jollyjump(num):
  numdiff = []
  for x,y in zip(num[1:], num[2:]):
    numdiff.append(abs(y-x))
  if set(numdiff) == set(range(1, max(num[1:]))):
    print('jolly')
  else:
    print('not jolly')

2018/06/01 21:09

Gerrad kim

Python

test = [[4, 1, 4, 2, 3], [5, 1, 4, 2, -1, 6]]
for t in test:
    n = t[0]
    ori_list = t[1:]
    cmp_list = list()
    for i in range(n-1):
        cmp_list.append(abs(ori_list[i]-ori_list[i+1]))
    cmp_list = sorted(set(cmp_list))
    if cmp_list == list(range(1, n)):
        print("Jolly")
    else:
        print("Not jolly")

2018/06/04 16:42

Taesoo Kim

#include<iostream>
using namespace std;

int main()
{
    int size;
    cout << "수열의 갯수를 입력하시오>>";
    cin >> size;
    int *p = new int[size];
    bool *v = new bool[size];

    for (int i = 0; i < size; i++)
    {
        cin >> p[i];
        if (p[0] == 0)
            return 0;
    }
    for (int i = 0; i < size; i++)
    {
        v[size - p[i]] = true;
    }

    for (int i = 0; i < size; i++)
    {
        if (v[i] != true)
        {
            cout << "Not Jolly" << endl;
            return 0;
        }
    }
    cout << "Jolly" << endl;
    delete[]p;
    delete[]v;
}

2018/06/22 15:47

Jun ki Kim

파이썬 star expression을 얼마전에 알게돼서 한번 써봤습니다

# input
input1 = []
while(True):
    n, *a= map(int,input().split())
    if n == 0: break
    input1.append([n, a])

# output
for n, a in input1:
    b = [abs(a[i] - a[i + 1]) for i in range(n-1) ]
    print("Jolly") if sorted(b) == list(range(1,n)) else print("Not Jolly")

2018/06/29 00:08

재즐보프

// Jolly Jumper
package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String st = sc.nextLine();
        getJolly(st);
    }

    public static void getJolly(String st)
    {
        String[] stArr = st.split(" ");
        int n = Integer.parseInt(stArr[0]);
        int[] subtraction = new int[n];
        int[] arr = new int[n];
        int a;
        for(int k = 0; k < n; k++) // readLine()으로 받은 수를 int형 배열에 저장
            arr[k] = Integer.parseInt(stArr[k+1]);
        for(int j = 1; j < n; j++) // 인접수 차 계산
        {
            subtraction[Math.abs(arr[j] - arr[j-1])]++;
        }
        for(a = 1; a < n; a++)
        {
            if(subtraction[a] != 1)
            {
                System.out.println("Not Jolly");
                break;
            }
        }
        if(a == n)
            System.out.println("Jolly");
    }
}

2018/07/16 16:38

이동수

x = []
while 1:
    x.append(tuple(map(int,input().split())))
    if x[-1][0] == 0: x.pop(); break

for item in x:
    if sorted(abs(item[i]-item[i+1]) for i in range(1,item[0])) == [j for j in range(1,item[0])]: print(item[1:],'Jolly',sep=' ▶▶▶ ')
    else: print(item[1:],'Not jolly',sep=' ▶▶▶ ')
4 1 4 2 3
5 1 4 2 -1 6
0
(1, 4, 2, 3) ▶▶▶ Jolly
(1, 4, 2, -1, 6) ▶▶▶ Not jolly

2018/07/17 13:03

Creator

jolly = list(map(lambda x : int(x) , input('Is it Jolly? : ').split()))
ans = []

for x in range(jolly[0]-1):
     ans.append(abs(jolly[x+2]-jolly[x+1]))

if list(sorted(ans)) == list(range(1,jolly[0])):
     print('JOLLY')
else:
     print('NOT JOLLY')

2018/07/22 22:43

김영성

package test;

import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        int[] num = { 1, 4, 3, 6, 5, 2 };
        Arrays.sort(num);
        boolean a = true;
        for (int i = 0; i < num.length; i++)
            if (num[i] != num[num.length - 1] - (num.length - 1 - i))
                a = false;
        System.out.println(a ? "Jolly" : "Not jolly");
    }
}

2018/08/26 19:57

김지훈

1부터 n-1까지의 값을 가지고 있어야한다는 점을 이용하여 소거법을 사용해서 만들어 보았습니다.

import math

def jolly(arr):
    test = list(range(1,len(arr)))
    for i in range(1,len(arr)):
        res = abs(arr[i] - arr[i-1])
        if res in test:
            test.remove(res)

    if test == []:
        return True
    else:
        return False

s2 = [1,4,2,3]
s3 = [1,4,2,-1,6]

print (jolly(s2))
print (jolly(s3))


2018/08/27 01:28

Wisp

C#

using System;
using System.Linq;

namespace CD037
{
    class Program
    {
        static void Main(string[] args)
        {
            string result = string.Empty;
            while (true)
            {
                string input = Console.ReadLine();
                if (IsParsable(input, out int[] anArray))
                {
                    result += IsJolly(anArray) + Environment.NewLine;
                }
                else
                {
                    Console.WriteLine(result);
                    break;
                }
            }
        }

        static bool IsParsable(string aString, out int[] parsed)
        {
            string[] inp = aString.Split();
            int checkSize = int.Parse(inp[0]); // 입력 사이즈
            parsed = new int[checkSize];
            if (checkSize == 0) { return false; } // 입력 사이즈가 0인 경우 거짓 반환 |> 프로그램 종료
            for (int i = 0; i < parsed.Length; i++)
            {
                parsed[i] = int.Parse(inp[i + 1]);
            }
            return true;
        }

        static string IsJolly(int[] anArray)
        {
            int[] cnvArray = new int[anArray.Length - 1];
            for (int i = 0; i < anArray.Length - 1; i++)
            {
                cnvArray[i] = Math.Abs(anArray[i] - anArray[i + 1]);
            }
            Array.Sort(anArray); Array.Sort(cnvArray);
            string result = "Not Jolly";
            if (anArray.Take(anArray.Length - 1).SequenceEqual(cnvArray)) { result = "Jolly"; }
            return result;
        }
    }
}

2018/09/04 15:59

mohenjo

int main()
{
    int test[1001] = { 0, }, n, ans[1001] = { 0, };
    int result = 1;
    cin >> n;
  for (int i = 0; i < n; i++)   cin >> test[i];
  for (int i = 0; i < n - 1; i++) ans[abs(test[i] - test[i + 1]) - 1] ^= 1;
  for (int i = 0; i < n - 1; i++)   result &= ans[i];
    result == 1 ? cout << "Jolly" : cout << "Not Jolly";
    return 0;
}

2018/10/02 00:24

jungwoo jo

def jolly_jumper(s) :
    # 문자열 공백으로 분리
    main_list = s.split(" ")
    # 정수 개수
    cnt = int(main_list.pop(0))
    if cnt == 0 :
        #0이면 종료
        return "종료"
    elif len(main_list)!=cnt :
        # 숫자리스트가 주어진 개수와 같지 않으면 false
        return "Not Jolly"
    else :
        # 1~n-1 리스트에 넣는다
        num_list = [i for i in range(1, cnt)]        
        for i in range (0, len(main_list)-1) :
            num = abs(int(main_list[i])-int(main_list[i+1]))
            try :
                # 앞 뒤 숫자 차의 절대값을 리스트에서 빼준다.
                num_list.remove(num)
            except :
                return "Not Jolly"
        return "Jolly"

2018/11/05 22:50

쨔이

se = input().split()

n = int(se[0])

r = list(map(int, se[1:])) # []로 감싸면 맵의 주소값 하나만 저장함;;;

if n > 1:

    j = {x for x in range(1, n)}
    z = zip(r[0:n-1], r[1:])
    c = {abs(i-ii) for i, ii in z}

    if j == c:
        print("Jolly")
    else:
        print("Not Jolly")

2018/11/21 23:05

그사람 남한 볼 수 있어요

from itertools import takewhile

while 1:
    line = list(map(int, input().strip().split()))

    n, i = line[0], line[1:]

    if n == 0:
        break

    kijun = []
    m = []
    for k in range(1,n):
        kijun.append(k)

    for j in range(1,n):
        m.append(abs(i[j-1]-i[j]))

    s = list(takewhile(lambda x: kijun.count(x) != 0, m[0:]))
    if len(s) == len(kijun):
        print('Jolly')
    else:
        print('Not Jolly')

2018/11/28 17:35

Dae Su Jeong

while 1:
    line= list(map(int, input('입력:').split()))
    if len(line[1:]) != line[0]:
        print('수열의 개수가 맞지 않습니다.')
    else: break

Check =line[1:]
lists=[i for i in range(1,line[0])]
result=[]
for j in range(1,len(Check)):
    result.append(abs(Check[j-1]-Check[j]))
if sorted(result) == lists:
    print('Jolly')
else: print('Not Jolly')

2019/01/02 16:41

S.H

// 앞 자리 수 입력 안해도 됩니다. 자동으로 계산함. 

public class KimSanghyeop {

    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("수열을 입력하세요!");
        String[] str_input = sc.nextLine().split(" ");
        boolean[] res= new boolean[str_input.length-1];

        String desc = "Jully";
        int before, after;
        for(int f1=0;f1<str_input.length-1;f1++)
        {
            before = Integer.valueOf(str_input[f1]);
            after = Integer.valueOf(str_input[f1+1]);

            try
            {
                res[Math.abs(after-before)-1]=true;
            }
            catch(Exception e)
            {
                desc = "Not Jully";
            }
        }

        for(int f1=0;f1<res.length;f1++)
        {
            if(!res[f1])
            {
                desc = "Not Jully";
                break;
            }
        }

        System.out.println(desc);
    }
}

2019/01/08 07:24

김상협

def is_Jolly(numline):
    temp = set()
    for i in range(0, len(numline) - 1):
        temp.add(abs(numline[i + 1] - numline[i]))

    compareset = { i for i in range(1, len(numline)) }

    if temp == compareset:
        return 'Jolly'
    else:
        return 'Not Jolly'

result = []
while True:
    jo = list( map(int, input().split()))
    if jo[0] == 0:
        break
    elif jo[0] > 3000:
        raise Exception('too large number')
    else:
        jo.pop(0)
        result.append(jo)

for i in result:
    print(is_Jolly(i))

2019/01/29 10:46

D.H.

set개념을 최대한 활용해서 구현해봤습니다. zip을 이용하면 더 간단히 할 수 있군요 배워 갑니다.

def JollyMachine():
    while True:
        input_list = list(map(int,input().split()))
        # Check if input_number list's length is correct
        # Exception error processing
        numElem = len(input_list) - 1
        out_number = (numElem != input_list[0])
        out_range = (input_list[0] > 3000 or input_list[0] < 0)
        exit_condition = (input_list[0] == 0)

        if out_number or out_range:
            print("Error!")
        elif exit_condition:
            print(input_list)
            print("The program is ended.")
            break
        # print(input_list)

        # Check this progression is Jolly or Not Jolly
        cmp = len(set(list(range(1,numElem))) - set([abs(input_list[i] - input_list[i+1])
                                                     for i in range(1, numElem)]))

        if cmp == 0:
            print("Jolly")
        else:
            print("Not Jolly")

JollyMachine()

2019/02/09 02:44

ChungGeol You

a=list(input().split(' '))
list1=[]
for x in range(1,int(a[0])):
    list1.append([x])
list2=[]
for y in range(1,int(a[0])):
    n=abs(int(a[y+1])-int(a[y]))
    lists=[n]
    list2.append(lists)
list2.sort()
if list2==list1:
    print('Jolly')
else:
    print('Not Jolly')

2019/02/20 22:48

소요자재

namespace codingdojang__
{
    class Program
    {
        static void Main(string[] args)
        {
            Jolly_jumpers("4 1 4 2 3");
            Jolly_jumpers("5 1 4 2 -1 6");
        }
        static void Jolly_jumpers(string input)
        {
            string[] sequence = input.Split(' ');
            List<int> temp_list = new List<int> { };
            List<int> ex_list = new List<int> { };
            bool jolly = false;
            for (int i = 1; i < int.Parse(sequence[0]); i++)
            {
                temp_list.Add(Math.Abs(int.Parse(sequence[i]) - int.Parse(sequence[i + 1])));
            }
            for (int i = 1; i < int.Parse(sequence[0]); i++)
            {
                ex_list.Add(i);
            }
            temp_list.Sort();
            for (int i = 0; i < ex_list.Count(); i++)
            {
                if (temp_list[i] == ex_list[i])
                {
                    jolly = true;
                }
                else if (temp_list[i] != ex_list[i])
                {
                    jolly = false;
                    break;
                }
            }
            Console.WriteLine(jolly ? "Jolly" : "Not Jolly");
        }
    }
}

2019/02/24 10:48

bat

def jolly():
    num_list = input("수열을 입력하세요.").split()
    num_list_len = len(num_list)
    total_list = list()
    for a in range(1,num_list_len):
        total_list.append(a)
    total_list.sort()
    subtract = list()
    for x in range(num_list_len-1):
        subtract.append(abs(int(num_list[x])-int(num_list[x+1])))
    subtract.sort()

    subtract_set = list(set(subtract))
    subtract_set_len = len(subtract_set)
    for i in range(subtract_set_len):
        if total_list.count(subtract_set[i]) ==1:
            a = True
        else:
            a = False

    if len(total_list) == subtract_set_len and a ==True:
        print("Jolly!")
    else :
        print("Not Jolly!")

2019/04/01 10:29

박범수

#input = [4,1,4,2,3]
input = [5,1,4,2,-1,6]

jolList1 = []
jolList2 = []
n = int(input[0])

for i in range(1,len(input)-1):
    jolList1.append(abs(input[i+1]-input[i]))

for j in range(1,n):
    jolList2.append(j)

jolList1=set(jolList1)
jolList2=set(jolList2)

if jolList1 == jolList2:
    print("Jolly")
else:
    print("Not Jolly")

2019/04/15 17:42

Chang Hwan Kim

inpL=list(map(int,input().split()));qwe=[];n=inpL[0];del inpL[0]

for i in range(len(inpL)-1):
    qwe.append(abs(inpL[i]-inpL[i+1]))

if sorted(qwe)==list(range(1,len(qwe)+1)):
    print("Jolly")
else:
    print("Not jolly")

2019/05/04 11:11

암살자까마귀

n, *L = map(int, input().split())

J = {abs(L[i+1]-L[i]) for i in range(len(L)-1) }
N = set(range(1, n))

if J == N: print('Jolly')
else: print('Not Jolly')
4 1 4 2 3
Jolly

5 1 4 2 -1 6
Not Jolly

2019/05/10 22:51

messi

def isJolly(*nums):
    for i in range(1, nums[0]):
        if abs(nums[i]-nums[i+1]) != nums[0]-i: return False
    return True

abs를 이용해봤습니다. 밑에는 풀이를 참고해봤습니다.

def isJolly2(jolly):
    diff = [abs(x[0]-x[1]) for x in zip(jolly[1:], jolly[2:])]
    return True if sorted(diff) == list(range(1, jolly[0])) else False

2019/06/01 14:33

이진형

print("수열 입력 ( 수열의 첫 번쨰 수는 수열의 원소의 개수)")
a=list(input().split(' '))
i=0
while i<len(a):
    a[i]=int(a[i])
    i+=1
num=list(range(1,len(a)-1,1))
result=[]
j=1
while j+1<len(a):
    if abs(a[j]-a[j+1]) in num:
        result.append(abs(a[j]-a[j+1]))
    j +=1
result.sort()
if result==num:
    print("Jolly")
else:
    print("Not jolly")

2019/08/18 19:31

박재욱

input1 = input("숫자를 입력하세요 : ")
input1 = input1.split(" ")
input1_num = input1[1:]
count = 0
list1 = []
for i in range(len(input1_num) - 1):
    diff = abs(int(input1_num[i]) - int(input1_num[i + 1]))
    list1.append(diff)
for j in range(1,int(input1[0])):
    if list1.count(j) > 0:
        count += 1
if count == int(input1[0]) - 1:
    print("Jolly")
else:
    print("Not Jolly")





2019/09/24 16:42

황수빈

def fun(L):
    count = 0
    for i in range(len(L)-1):
        if abs(L[i]-L[i+1]) in L:            
            count+=1            
        else :
            break

    if count == len(L)-1 :
        print("Jolly")
    else :
        print("Not Jolly")


L1 = [4,1,4,2,3]
L2 = [5,1,4,2,-1,6]

fun(L1)
fun(L2)

2019/10/28 22:03

semipooh

import java.util.; import java.lang.; public class JollyJumpers {

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    String[] lines = scan.nextLine().split(" ");
    int[] nums = Arrays.stream(lines).mapToInt(Integer::parseInt).toArray();
    int[] count = new int[nums[0]];
    if(lines[0].equals("0")) {
        System.out.println("종료");
        System.exit(0);
    }
    for(int i=0; i<nums[0]; i++) {
        count[i] = i;
    }
    int[] sums = new int[nums[0]];
    sums[0] = 0;
    for(int j=1; j<nums.length-1; j++) {
        sums[j] = Math.abs(nums[j+1]-nums[j]);
    }
    Arrays.sort(sums);
    if(Arrays.equals(count, sums)) {
        System.out.println("Jolly");
    }
    else {
        System.out.println("Not Jolly");
    }
}

}

2019/11/17 20:04

big Ko

jolly=input().split(' ')
a=len(jolly)
Sum=[]
y=[]
for i in range(1,len(jolly)-1):
    Sum.append(abs(int(jolly[i])-int(jolly[i+1])))

for x in range(1,a-1):
    y.append(x)
Sum.sort()
y.sort()
if Sum == y:
    print('jolly')
else:
    print('Not jolly')   

2020/01/04 14:09

뚜루꾸까까

check = True
testlist = list()
while(True):
    while(True):
        N = list(map(int,input().split()))
        NM = N.pop(0)
        if NM == len(N):
            break
    if NM == 0:
        break
    for i in range(len(N)-1):
        if N[i] - N[i+1] < 0:
            testlist.append((N[i] - N[i+1])*-1)
        elif N[i] - N[i+1] >= 0:
            testlist.append(N[i]-N[i+1])
    for j in range(len(testlist)-1):
        if testlist[j] - testlist[j+1] != 1 and testlist[j] - testlist[j+1] != -1:
            check = False
    if check == True:
        print("Jolly")
    elif check == False:
        print("Not jolly")
    check = True
    testlist = list()

2020/02/01 23:37

BlakeLee

import java.util.Scanner;
import java.util.ArrayList;

public class JollyJumpers {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> al = new ArrayList<Integer>();
        JollyJumpers jj = new JollyJumpers();

        int count = 0;
        boolean run = true;

        while(run) {

            System.out.print("숫자를 입력하시오: ");
            String str = sc.nextLine();
            int[] numArray = jj.Sort(str);

            if(numArray[0]== 0) {
                System.out.println("프로그램 종료");
                break;
            }       
            for(int i =1; i<numArray.length-1; i++) {                           //두 정수의 차이값 구하기(양수일때)
                if(numArray[i+1] - numArray[i] > 0) {
                    al.add(i-1, (numArray[i+1]-numArray[i]));

                } else {                                                        //두 정수의 차이값 구하기(음수일때)
                    al.add(i-1, (numArray[i]-numArray[i+1]));

                }
            }       
            for(int j = 0; j<al.size()-1; j++) {                                //차이가 1일때 count 증가
                if(al.get(j)-1 == al.get(j+1)) {
                    count++;
                }
            }
            if(count == numArray[0]-2) {                                        //count가 n-2개일 때 Jolly
                System.out.println("Jolly");
            } else {
                System.out.println("Not Jolly");
            }
            count = 0;
            al.clear();
        }
    }

    public int[] Sort(String str) {
        String[] Array = str.split(" ");
        int[] numArray = new int[Array.length];
        for(int i =0; i<numArray.length; i++) {
            numArray[i]=Integer.parseInt(Array[i]);
        }
        return numArray;
    }
}

ArrayList를 이용하여 차이값이 1일때의 갯수를 구한뒤 n-2개가 맞는지 확인했습니다.

2020/02/09 23:42

김강민

def J_J(inp) :
    if inp[0] != len(inp)-1 :
        return "Error!"
    else :
        bt = set(map(lambda x : abs(x[0]-x[1]), zip(inp[1:], inp[2:])))

        if bt == set(range(1, inp[0])) :
            return "Jolly"
        else :
            return "Not jolly"

if __name__ == '__main__' :
    print(J_J(list(map(int, input("INPUT : ").split()))))

결과

INPUT : 4 1 4 2 3
Jolly

INPUT : 5 1 4 2 -1 6
Not jolly

2020/02/17 14:27

GG

def is_jolly(nums):

    diff = [abs(a - b) for a, b in zip(nums, nums[1:])]

    jolly = [i for i in range(1,n)]

    diff.sort()

    jolly.sort()

    if diff == jolly:

        print('jolly')

    else: 
        print('not jolly')

while 1:
    line = list(map(int, input().strip().split()))
    n, nums = line[0], line[1:]
    if n == 0:
        break
    print(is_jolly(nums))

2020/03/10 09:04

HyukHoon Kim

a = input("수를 입력: ").split()

b = list(map(int, a))

m = set(range(1, len(b)-1))

c = set()

for i in range(1, len(b)-1):
    n = abs(b[i]-b[i+1])
    c.add(n)

if m == c:
    print("jolly")
else:
    print("Not jolly")

2020/03/23 22:45

김희준

import numpy as np
n, *a = map(int, input().split())
a = np.array(a)
a = n - a
a = sorted(a)
if list(range(n)) == a:
    print("Jolly")
else:
    print("Not Jolly")

2020/03/25 14:18

러너비

import numpy as np
arr1 = []
n, *a = map(int,input().split())
arr1 = n - np.array(a)
if sorted(range(0,n)) == sorted(arr1):
    print("Jolly")
else:
    print("Not Jolly")

2020/03/27 13:52

러너비

파이썬 입니다.

while True:

    ui = str(input("입력하시오: ")).split(' ')

    if int(ui[0]) == 0:
        break
    elif int(ui[0]) < 1:
        print("숫자의 갯수는 0개 이상 입력이 필요 합니다.")
        continue
    if int(ui[0]) != len(ui) - 1:
        print("숫자의 갯수와 입력하신 갯수가 일치하지 않습니다.")
        continue

    ui_set = set()
    tar = set(range(1, int(ui[0])))

    pre_val = int(ui[1])
    for i in range(2, len(ui)):
        ui_set.add(abs(pre_val-int(ui[i])))

    if tar.__eq__(ui_set):
        print("Jolly")
    else:
        print("Not jolly")

2020/03/28 11:47

뤼크

Jolly여부를 판단하는 함수를 생성 입력한 값을 기준으로 인접한 두수의 차를 구한 리스트와 1부터 입력된 수자리-1(n-1)의 리스트를 만든후 두개의 리스트를 정렬후 비교하여 일치하면 jolly, 일치하지 않으면 not jolly를 출력하게 함

def is_jolly(input_list):
    comp_list = []
    res_list = []

    for i in range(1, int(input_list[0])):
        comp_list.append(i)

    for i in range(1, len(input_list)-1):
        res_list.append(abs(int(input_list[i])-int(input_list[i+1])))

    if sorted(comp_list)==sorted(res_list):
        return True
    else:
        return False


while True:
    input_list = input('숫자를 입력하세요: ').split()

    if input_list[0]=='0':
        print('종료합니다')
        break

    if is_jolly(input_list):
        print('jolly')
    else:
        print('not jolly')

2020/04/06 21:52

잘해보자

# 각 인접합 수의 차를 리스트 b에 기억시키고
# 1부터 n-1까지의 수가 리스트 b에 들어 있는지 체크하여
# Not Jolly 및 jolly 판별

a,b=str(input('Input numbers....')).split(' '),[]
if a[0]!='0':
    for i in range (1,len(a)-1):
        b.append(abs(int(a[i])-int(a[i+1]))) 
    i=1
    while (i<int(a[0])):
        if i in b:
            i+=1
        elif i not in b:
            print ('Not Jolly')
            break
    if i==int(a[0]):
        print ('Jolly')

2020/04/08 16:33

Buckshot

<결과> Input numbers....4 1 4 2 3 Jolly Input numbers....0 2 3 Input numbers....5 1 5 2 0 1 Jolly Input numbers....5 1 5 2 0 1 Jolly - Buckshot, 2020/04/08 16:34
def jolly_jumper(sample_input, num_of_seq):
    diff = {abs(a - b) for a, b in zip(sample_input, sample_input[1:])}
    sample_output = 'Jolly' if (num_of_seq - 1) == len(diff) else 'Not jolly'
    return sample_output

def main():
    sample_input = [4, 1, 4, 2, 3]
    num_of_seq, sample_input = sample_input[0], sample_input[1:]
    sample_output = jolly_jumper(sample_input, num_of_seq) if num_of_seq != 0 else quit()
    print(sample_output)

if __name__ == '__main__':
    main()

2020/04/14 16:22

Hwaseong Nam

list_a=input("수열 : ").split(" ")
jolly=[]
for i in range(len(list_a)-1,0,-1):
    jolly.append(abs(int(list_a[i])-int(list_a[i-1])))
a=0
for i in range(0,len(jolly)):
    if (i+1)!=jolly[i]:
        a=1
if a==1:
    print("Not jolly")
else:
    print("jolly")

2020/04/25 22:53

kim center

li=list(map(int,input('input number, 우선 배열갯수,  그다음부터 배열 : ').split()))
n=int(li.pop(0))
li2=[]
print(li)
for i in range(n-1):
    li2.append(abs(li[i+1]-li[i]))

print(li2)
print(sorted(li2))

if sum(li2)==n*(n-1)/2:
    print('jolly jump')
else:
    print('non jolly')


2020/04/28 22:25

양양짹짹

n = int(input())
jolly = input().split(" ")
iff =[]
for i in range(1,n):
    iff.append(i)
abss = []

for i in range(0,len(jolly)-1):
    abss.append(abs(int(jolly[i+1])-int(jolly[i])))
if sorted(abss) == iff:
    print("Jolly")
else:
    print("Not Jolly")

2020/05/11 22:36

Money_Coding

numbers=list(map(int, input().strip().split()))
second=set([abs(a-b) for a, b in zip(numbers, numbers[1:])])
numbers.sort()
first=set(numbers[:-1])
print('Jolly' if first==second else 'Not Jolly')

2020/06/18 09:35

SREBP1c

파이썬3입니다.

numberList = list(map(int, input('input numbers with blank. ').split()))
lenList = numberList[0]
del numberList[0]
subNumber = [abs(numberList[x] - numberList[x - 1]) for x in range(1, len(numberList))]
print('Jolly Jumpers' if sum(subNumber) == sum([x for x in range(len(numberList))]) else 'Not jolly')

2020/06/18 13:45

누마루

package test;
import java.util.*;

public class Test{
     public static void main(String args[]) {

         Scanner sc = new Scanner(System.in);
         int n = Integer.parseInt(sc.next());
         int arr[] = new int[n]; // 입력값
         int arr2[] = new int[n-1]; // 1~ n-1 값
         int abs[] = new int[n-1]; //차의 절대값
         for(int i = 0; i < n; i++) { //arr에 n개의 정수 삽입
             arr[i] = Integer.parseInt(sc.next());
         }

         for(int i = 1; i<=arr2.length; i++)//arr2에 1~n-1 삽입
             arr2[i-1] = i;

         for(int i = 0; i<arr.length-1; i++) { //abs에 차 절댓값 삽입
             abs[i] = Math.abs(arr[i]-arr[i+1]);
         }
         Arrays.sort(abs); //abs에 절댓값 차 정렬

         for(int i = 0; i<arr2.length;i++) {
            if(arr2[i] == abs[i]) {
                if(arr2[i]==arr2[arr2.length-1]) {
                    System.out.println("Jolly");
                    break;
                }
            }
            else if(arr[i] != abs[i]) {
                System.out.println("Not jolly");
                break;
            }
         }
         sc.close();
    }
}





2020/08/21 16:22

들산

temp = list(map(int,input().split(" ")))
jud = []
for i in range(1,len(temp)-1):
    if abs(temp[i] - temp[i+1]) in temp:
        jud.append(True)
    else:
        jud.append(False)
if False not in jud:
    print("Jolly")
else:
    print("Not jolly")

2020/11/24 15:50

김우석

def jol(text):
    args = text.split()
    temp_max = int(max(args))
    temp_1 = []

    for i in range(1,temp_max):
        temp_1.append(i)

    temp_2 = []
    for j in range(len(args)):
        try:
            sub = int(args[j]) - int(args[j+1])
            if sub >= 0:
                temp_2.append(sub)
            else:
                temp_2.append(-sub)
        except: pass
    print(temp_1, temp_2, list(set(temp_2)))
    if temp_1 == list(set(temp_2)):
        return print('JOLLY!')
    else:
        return print('NOT JOLLY')


jol('4 1 4 2 3')
jol('5 1 4 2 -1 6')

2020/12/08 08:44

DSHIN

package main;


import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = 0;//수열의 범위를 지정
        n = sc.nextInt();
        int[] arData = new int[n];
        int num = 0;
        int[] temp = new int[n-1];
        int[] jol = new int[n-1];
        int Cnt = 0;
        for (int i = 0; i < n; i++) {
            num = sc.nextInt();
            arData[i] = num;
        }
        for (int i = 0; i < temp.length; i++) {
            if(0>arData[i]-arData[i+1]) {
                temp[i] = -(arData[i]-arData[i+1]);
            }else {
                temp[i] = arData[i]-arData[i+1];
            }
        }
        Arrays.sort(temp);

        for (int i = 0; i < jol.length; i++) {
            jol[i]=i+1;
            if(jol[i]==temp[i]) {
                Cnt++;
            }
        }
        if(Cnt == n-1) {
            System.out.println("Jolly");
        }else {
            System.out.println("Not Jolly");
        }
    }
}

2020/12/13 23:42

김준혁

def it_is_jolly_jumper(list):

  if list[0]==0:

    print("what???")

  for_answer=[]

  for i in range(1,list[0],1):

    for_answer.append(i)

  for i in range(1,list[0],1):

    if abs(list[i+1]-list[i]) in for_answer:

      for_answer.remove(abs(list[i+1]-list[i]))

  if for_answer==[]:

    return "Jolly"

  else:

    return "Not jolly"


print(it_is_jolly_jumper([4,1,4,2,3]))

print(it_is_jolly_jumper([5,1,4,2,-1,6]))

2020/12/15 16:44

전준혁

def jolly(x):
    array = list(map(int,x.split()))

    for i in range(1,array[0]):
        if abs(array[i]-array[i+1]) not in array[1:]:
            return 'not jolly'
    return 'jolly'

2021/01/03 14:18

hankyu

def main():
    arr = list(map(int,input().split()))
    if arr[0] == 0:
        print("end")
        return 0
    result = []

    for i in range(1,arr[0]):
        result.append(abs(arr[i+1] - arr[i]))

    result = set(sorted(result))
    jarr = set(list(range(1,arr[0])))
    if(result == jarr):print("Jolly")
    else: print("Not jolly")
main()

2021/01/05 23:15

guma go

def jolly(num_list):
    substract_list=[]
    for n in range(1,len(num_list)):
        substract_list.append(abs(num_list[n]-num_list[n-1]))
    substract_set=set(substract_list)
    if len(substract_set)==len(num_list)-1:
        return 'Jolly'
    else:
        return 'not Jolly'

print(jolly([1,4,2,3]))

2021/01/14 21:23

dong hoon

let inputAry=prompt('배열 입력','').split(' ');
let ary = inputAry.map((el)=>Number(el));
const num=ary[0];
let range=new Array(num);
let cnt =0;
ary.shift();

const result=ary.reduce((prev, cur)=>{
    prev=Math.abs(prev-cur)
    if(prev>=1 && prev<=num){
        range[prev]='exist';
    }
    return cur
})

const count=range.map((el)=>el=='exist'&&cnt++);

cnt==(num-1)?document.write('Jolly'):document.write('notJolly')

2021/02/01 16:18

wldus

a= list(input("수열의 갯수를 적고 숫자를 입력하세요 : ").split())
b = a.pop(0)
c = int(b)
count = 0 
for i in range(len(a)):
    c-=1
    if b=='0':
        print("0은 수행되지않습니다")
        break
    elif count==len(a)-1:
        print("Jolly")
    elif int(b) != len(a):
        print(len(a))
        print("수열의 갯수를 잘못적었습니다")
        break 
    elif i==len(a)-1:
        break
    elif abs(int(a[i])-int(a[i+1]))==c and c!=-1:
        count+=1
    else:
        print("Not jolly")
        break

2021/02/18 22:08

fox.j

input_lst = list(map(int,(input().split(' '))))
lst = input_lst[1:]
output = []

for i in range(1, len(lst)):
    output.append(abs(lst[i]-lst[i-1]))
    output.sort()
check = [x for x in range(1, len(lst))]

if check == output:
    print("Jolly")
else:
    print('Not jolly')

2021/02/22 17:17

asdfa

# 빼기 함수
def sub(a, b):
    return abs((b - a))


value = list(map(int, input("입력시킬 개수와 수열을 입력하세요 : ").split()))

n = value[0]
sequence = value[1:]

if n == 0:
    print("프로그램을 종료합니다.")

elif n != len(sequence):
    print("입력시킬 개수와 수열의 개수가 맞지 않습니다.")

else:
    requirement = list(range(sequence[0],sequence[1]))
    sublist = []

    for i in range(len(sequence)):
        subvalue = sub(sequence[i],sequence[i+1])
        sublist.append(subvalue)
        if i == len(sequence) - 2:
            break

    if list(set(sublist)) == requirement:
        print("Jolly")
    else:
        print("Not jolly")

2021/02/26 14:29

지누

x=input('수열 입력')

xlist=x.split(' ')

n=int(xlist[0])
result=[]
compare=[]
for i in range(1,n):
    compare.append(int(i))

for i in range(1,n+1):
    if i != n :
        result.append(abs(int(xlist[i]) - int(xlist[i+1])))

if sorted(result) == compare:
    print('Jolly')
else:
    print('Not Jolly')

2021/03/22 09:45

최우진

def makeAns(str_):
    list_ = [int(elem) for elem in str_.split(" ")]
    list_.remove(list_[0])
    list_2 = list(set([abs(list_[i] - list_[i+1]) for i in range(0, len(list_)-1)]))
    list_2.sort()
    if len(list_) == len(list_2) + 1:
        str1 = "Jolly"
        for i in range(0, len(list_2)-1):
            if list_2[i+1] - list_2[i] != 1:
                str1 = "Not Jolly"
                break
        print(str1)
    else:
        print("Not Jolly")



makeAns("4 1 4 2 3")
makeAns("5 1 4 2 -1 6")

결과
Jolly
Not Jolly

2021/04/22 13:36

와장창

def check_Jolly(inp_list):
    c=[]
    for i in range(len(inp_list)-1):
        c.append(abs(inp_list[i]-inp_list[i+1]))
    return sorted(c)

s = list(map(int,(input().split())))
n = s[0]   
c = check_Jolly(s[1:])

if c == list(range(1,n)):
    print("Jolly") 
else:
    print("Not Jolly") 

2021/04/30 20:28

최태호

not jolly!

import random

def JJ(i):
    if i >3000 : print('3천 이하 정수만 ㄱㄴ')
    l=[i]    
    while len(l)<i :
        r = random.randint(1,i)
        l.append(r)
        L = set(l)
    if len(L)==i :
        print('jolly!')
        print(l)
    else :
        print('not jolly!')
        JJ(i)

2021/05/26 11:33

약사의혼자말


a = list(map(int,'5 1 4 2 -1 6'.split(' ')))
k = []
for (x,y) in zip(a[1:],a[2:]):
     k.append(abs(y-x))

h = 0
for i in range(1,a[0]):
  if i in k: h += 0
  else: h += 1

if h> 0 : print("Not Jolly")
elif h == 0: print("Jolly")

2021/05/30 19:36

ss2663

#codingdojing_jollyjmp_re

# '012345' 와 같이 n-1개로 문자열이나 리스트 만든다

import sys

j_input = input("input(n i i i i...): ")
j_list = [int(x) for x in j_input.split()]

N = j_list[0]   #number of integer

if N != len(j_list[1:]):       #input error
    print('numbers not matching')
    sys.exit()

nums = [str(abs(j_list[i]-j_list[i+1])) for i in range(1, N)] #숫자들의 차이의 절대값 -> string
nums = ''.join(sorted(nums)) #nums.sort() 는 not iterable
jolly_num = ''.join(str(x) for x in range(1, N)) #"처음 숫자가 N이면, 1~n-1까지 숫자들을 string으로, 1234567"

if nums == jolly_num: print("Jolly")
else: print("Not Jolly")

## 다른 사람 풀이 참고해서 수정

j_input = input("input(n i i i i...): ")
j_list = [int(x) for x in j_input.split()]

N = j_list[0] #number of integer

if N != len(j_list[1:]):       #input error
    print('numbers not matching')
    sys.exit()

nums = {abs(a-b) for a,b in zip(j_list[1:], j_list[2:])} # set으로 비교

if nums == set(range(1,N)): print("Jolly")
else: print("Not Jolly")




2021/07/28 10:09

Jaeman Lee

파이썬 3.8.10으로 작성했습니다.

def is_jolly_jumper(lst):
    if lst[0] == 0:
        return 0
    else:
        diff = []
        for i in range(1, lst[0]):
            diff.append(abs(lst[i] - lst[i + 1]))
        if set(diff) == set(range(1, lst[0])):
            print('Jolly')
        else:
            print('Not Jolly')


def main():
    sample_input = [4, 1, 4, 2, 3]
    is_jolly_jumper(sample_input)


if __name__ == '__main__':
    main()

2021/08/11 11:45

baek choi

x=list(map(int,input().split()))
n=x.pop(0)
if n==0:
    print(n)

elif set(range(1,n)) - {abs(x[i]-x[i-1]) for i in range(1,n)}:
    print('Not Jolly')
else:
    print('Jolly')

2021/09/20 20:00

ninanino

n = int(input("수열의 개수를 입력하세요"))
m = 0

arr =[]
input_arr =[]
arr1 = []

for i in range(1,n) :
    arr.append(i)


while True :
    a = int(input("정수를 입력해주세요"))
    m +=1
    input_arr.append(a)
    if m ==n :
        break

for i in range(len(input_arr)-1) :
    arr1.append(abs(input_arr[i]-input_arr[i+1]))

if arr == arr1 : 
    print("Jolly")
else : 
    print("Not Jolly")

2021/12/22 01:20

양캠부부


while True :
    _input = input()
    _input = _input.split()
    _input = list(map(int,_input))

    if _input[0] == 0 :
        _input.pop(0)
        print(_input)
        break
    else :
        count = _input.pop(0)
        minus_list = [ num for num in range(1,max(_input)-min(_input)+1)]

        for i in range(0,count-1):
            minus = abs( _input[i] - _input[i+1] )
            if minus in minus_list : minus_list.remove(minus)

        if minus_list : print("Not Jolly")
        else : print("Jolly")




2022/01/08 15:38

강태호

// Rust

// set을 만들어서 비교

use std::collections::HashSet; fn main() {

let mut vecs = vec![];
loop {
    let mut input = String::new();
    std::io::stdin()
                .read_line(&mut input)
                .expect("input error");    // /n포함
    let vec: Vec<i32> = input.trim()
                                .split_whitespace()
                                .map(|s| s.parse::<i32>().unwrap())
                                .collect();
    if vec[0] != 0 {
        vecs.push(vec);
        continue;
    }
    break;
}
for vec in vecs {
    let n = vec[0];
    let v = &vec[1..];
    let mut set: HashSet<i32> = HashSet::new();

    for i in 1..v.len() {
        set.insert((v[i-1] - v[i]).abs());
    }
    if set == (1..n).collect() {
        println!("Jolly");
    }   else {
        println!("Not Jolly");
    }
}

}

2022/01/27 01:08

JW KIM

sample = '''4 1 4 2 3
5 1 4 2 -1 6 '''

def jol(a):
    num_list = a.split(' ')
    num_diff_list = [abs(int(num_list[x+1])-int(num_list[x])) for x in range(1, int(num_list[0]))]
    if [x in num_diff_list for x in range(1, int(num_list[0]))].count(True) == int(num_list[0])-1:
        return 'Jolly'
    else: 
        return "Not Jolly"

[jol(x) for x in sample.split('\n')]  

2022/02/08 15:20

로만가

package org.javaturotials.ex;
import java.util.*;
import java.util.stream.Collectors;

public class test {
    public static void main(String[] args) {    
        Scanner sc =new Scanner(System.in);
        while(true) {
        int num = sc.nextInt();
        int sum=0;
        int[] arr = new int[num];
        int[] count = new int[num + 1];
        for(int i=0; i<num; i++) {
            arr[i] = sc.nextInt();
        }
        for(int i=0; i<(arr.length)-1; i++) {
            int t = Math.abs((arr[i]-arr[i+1]));
            if(t<=num-1) {
            count[t]++;}
    }
        for(int i=0; i<count.length; i++) {
            if(count[i]!=0) {
                sum++;}
        }
        if(sum==(num-1)) {
            System.out.println("Jolly");
        }
        else {
            System.out.println("Not Jolly");
        }
    }
    }
    }

2022/02/22 12:41

Kkubuck

def jollyJumpers():
    nlist = list(map(int, input("jolly jumper 를 찾기 위한 n개의 정수를 입력 하시오").split()))
    abslist = []
    if nlist[0] <= 3000 and nlist[0] > 1:
        for i in range(1, nlist[0]):
            abslist.append(abs(nlist[i] - nlist[i+1]))

    abslist.sort(reverse=True)
    n = nlist[0] - 1

    for j in abslist:
        if n == j:
            n -= 1
        else:
            return 'Not jolly'
    return 'Jolly'
jollyJumpers()

2022/04/20 00:26

Charles

Input = input("수열의 갯수와 숫자를 입력하세요. : ").split()

c = int(Input[0])
n = Input[1:]
n1 = []
count = 0

while count < c-1:
  n1.append(abs(int(n[count]) - int(n[count + 1])))
  count += 1

if c == 0:
  print('0')
elif list(range(1,c)) == sorted(n1):
    print('Jolly')
else:
    print('Not jolly')

2022/06/18 15:48

김시영

a = list(map(int,input().split()))
b=[]
c=[]
if int(a[0]) != (len(a)-1):
    print('올바른 값 입력')
    exit()
for i in range(len(a)-2):
    b.append(abs(a[i+1]-a[i+2]))

for j in range(len(a)-2):
    c.append(j+1)

b.sort()

if b==c:
    print('Jolly')
else:
    print('Not Jolly')

2022/08/25 14:46

허명재

a = input("수열의 갯수와 정수를 입력하세요, ex)첫번째 입력인 4 1 4 2 3 의 맨 앞의 4는 뒤에 4개의 숫자가 온다는 것을 의미")
b = a.split(" ")
b_int = list(map(int, b))
cnt = b_int.pop(0)
k = []

for i in range(cnt-1): #0 1 2 3
    k.append(abs(b_int[i]-b_int[i+1]))

k.sort()

T = []
for i in range(1,cnt):
    T.append(i)

if T == k:
    print("Jolly")
else:
    print("Not Jolly")

2022/10/13 23:14

박대선

data = list(map(int,input(">").split()))
rest = []
fst_num = data[0]
del data[0]

if fst_num != len(data):
   print("NOT Jolly")
   exit()
else:
   for i in range(len(data)-1):
      if abs(data[i+1]-data[i]) in data:
         rest.append('J')
      else:
         rest.append('N')
if 'N' in rest:
   print('NOT JOLLY')
else:
   print('JOLLY')

2023/09/07 15:53

siu yoon

def isJollyJump(prob):
    res = set()
    for i in range(1, len(prob)):
        res.add(abs(prob[i-1]-prob[i]))
    return res == set(range(1, len(prob)))

prob = []
while True:
    p = [ int(x) for x in input('>>> ').split()]
    if p[0]==0:
        break
    prob.append(p[1:])

for p in prob:
    print(isJollyJump(p))

2024/01/13 19:03

insperChoi

JAVA입니다.

package question3.jolly_jumpers;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        Hashtable<Integer, Boolean> hasNumber = new Hashtable<Integer, Boolean>();
        List<Boolean> isJollyList = new ArrayList<Boolean>();

        while(true) {
            String[] input = sc.nextLine().split(" ");
            int length = Integer.parseInt(input[0]);
            if(length == 0) {
                break;
            }

            int[] numbers = new int[length];

            for (int i = 0; i < length; i++) {
                numbers[i] = Integer.parseInt(input[i+1]);
            }

            for (int i = 1; i < length; i++) {
                int diff = Math.abs(numbers[i] - numbers[i-1]);
                hasNumber.put(diff, true);
            }

            boolean isJolly = true;

            for (int i = 1; i < length; i++) {
                if(!hasNumber.containsKey(i)) {
                    isJolly = false;
                }
            }

            isJollyList.add(isJolly);
        }

        for (Boolean bool : isJollyList) {
            System.out.println((bool) ? "Jolly" : "Not jolly");
        }
    }

}

2025/02/15 22:49

박준우

목록으로