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

리스트 회전

아래 조건에 따라 리스트를 회전하는 프로그램을 작성하시오.

조건

  • 입력값은 한 행의 문자열로 주어지며, 각 값은 공백으로 구분된다.

  • 첫 번째 값은 리스트를 회전하는 양과 방향(음수의 경우 좌측으로, 양수의 경우 우측으로 회전)이다.

  • 첫 번째 값을 제외한 나머지 값은 리스트의 각 항목의 값이다.

  • 회전된 리스트를 문자열로 출력한다.

  • 구현에 이용할 자료구조에 대한 조건이나 제약은 없다.

  • 입력되는 리스트의 항목의 개수는 유한한다.

입출력예

예 1)

  • 입력: 1 10 20 30 40 50

  • 출력: 50 10 20 30 40

예 2)

  • 입력: 4 가 나 다 라 마 바 사

  • 출력: 라 마 바 사 가 나 다

예 3)

  • 입력: -2 A B C D E F G

  • 출력: C D E F G A B

예 4)

  • 입력: 0 똘기 떵이 호치 새초미

  • 출력: 똘기 떵이 호치 새초미

2014/02/20 00:22

박연오

회전하는 값은 무한이 가능한가요? 즉 예1) 에서 회전시킬 list의 length 는 5입니다. 그 경우 회전수가 5를 넘어가면 그대로 계속 회전시켜야 하는 것인지? 아니면 회전수가 len(list)를 넘기면 exception 을 내야 하는 것인지? 분명하지 않습니다. 예를 들면, 회전수가 무한히 가능하다면 5 = 0, 6 = 1, 7 = 2, .... 와 같은 결과가 나올 것입니다. 반대로 회전수가 5가 되면 제자리로 돌아오므로 5 이하로 회전시키고 5 이상이면 exception 을 내는 것이 문제의 의도인지요? - 예강효빠, 2017/05/18 13:35
아래 풀이를 보니 출제자께서 회전수의 절대값이 문자열길이보다 클때도 계속해서 돌리는 경우로 풀이를 하셨군요. 그렇다면 계속 돌리는 것으로 푸는 것이 맞겠습니다. 감사합니다. - 예강효빠, 2017/05/19 13:00

256개의 풀이가 있습니다.

data = input('회전수와 문자열을 입력하세요. : ').split()
rn = int(data.pop(0)) % len(data)
print(' '.join([(data*3)[len(data) + i - rn] for i in range(len(data))]))

가장 짧은 풀이에 도전합니다. (파이썬) 3 a b c d 를 받으면 3 을 빼고 a b c d a b c d a b c d 로 만들어 가운데에서 앞뒤로 (회전수%길이)만큼 옮깁니다.(양수일떄는 왼쪽 음수일떄는 오른쪽)

결과

회전수와 문자열을 입력하세요. : -2 i miss you so much
you so much i miss
회전수와 문자열을 입력하세요. : 3 i am shin chon gong dol ee
gong dol ee i am shin chon
회전수와 문자열을 입력하세요. : 11 i am a boy haha i love you
i love you i am a boy haha

2018/04/06 00:33

Hyuk

Good! - WJ K, 2018/07/13 16:57

Python3로 작성했습니다. 많은 분들이 split으로 구현하셨는데요 이는 그다지 효율적인 방법은 아닐듯하여 deque를 이용해 봤습니다.

import collections
datas = input("Input : ").split(" ")
cycleList = collections.deque(datas[1:])
cycleList.rotate(int(datas[0]))
print("Output :", " ".join(cycleList))

결과
Input : 1 10 20 30 40 50
Output : 50 10 20 30 40

2016/02/14 03:38

윤태호

+1 deque라는 모듈이 있었네요. 잘 알아갑니다^^ - Flair Sizz, 2016/03/13 11:51
저랑 같은 생각을 하신분이 있으시군요 하지만 Dequeu 내에 있는 1 값을 처리(*pop을 통해서)를 해줘야할거같아요. 단순 output 으로 나온 값이 답처럼 보이지만 큐 내부는 정리가 된상태가 아닌거같아요 - Daniel, 2016/12/30 17:18
@Daniel collections.deque(datas[1:])를 보시면 1은 제외 되어 있지요~ ^^ 잘 작동합니다. - 윤태호, 2017/01/03 13:47
collections 라는 모듈이 있다는 것을 배웠습니다. python은 참...연구하는데 참 좋네요. 고맙습니다. - 예강효빠, 2017/05/19 02:50
또 하나 배워갑니다! ^^ - Taesoo Kim, 2018/06/01 14:38
잘 배워 갑니다. - Kookeedd, 2019/03/20 09:37
def f(target1, str1):
    str1 = str1.split(' ')
    str1 = str1[-target1:] + str1[0:-target1]
    print(" ".join(str1))

f(1, '10 20 30 40 50')
f(4, '가 나 다 라 마 바 사')
f(-2, 'A B C D E F G')
f(0, '똘기 떵이 호치 새초미')

2017/08/31 10:42

piko

파이썬의 리스트는 음수 인덱스를 지원하기 때문에....

def main(instr):
    l = instr.split(" ")
    a = int(l.pop(0))
    a = a % len(l)
    l = l[-a:] + l[:-a]
    return " ".join(l)

print main("-2 10 20 30 40 50")

2014/12/11 19:00

룰루랄라

import java.util.*;

public class ListRotation {

    public static void main(String[] args) {
        List<String> ss = Arrays.asList(new Scanner(System.in).nextLine().split(" "));
        LinkedList<String> sss = new LinkedList<>(ss.subList(1, ss.size()));
        Integer r = Integer.valueOf(ss.get(0));

        while (r > 0) {
            sss.push(sss.pollLast());
            r--;
        }

        while (r < 0) {
            sss.addLast(sss.pollFirst());
            r++;
        }

        sss.forEach(i -> System.out.print(i + " "));
    }
}

2017/02/21 12:08

genius.choi

파이썬입니다.

def f(s):
    t = s.split()
    go = int(t[0])
    src = t[1:]
    result = [None] * len(src)
    for i in range(len(src)):
        result[(i+go) %len(src)] = src[i]
    return " ".join(result)

print f("1 10 20 30 40 50")
print f("-2 A B C D E F G")

result라는 대상을 먼저 만든 후에 이동할 인덱스를 구하여 대입하는식으로 풀어보았습니다.
파이썬은 result[-2]와 같은 마이너스 인덱싱이 되기 때문에 훨씬 수월하네요.

2014/02/21 01:02

pahkey

Clojure 코드입니다.

문제에는 안 나와있는데 -12 가 나 다 라 마 같은 경우처럼, 회전량이 리스트의 크기를 초과하는 경우에도 작동하도록 하였습니다. (제가 문제를 작성하였는데, 깜빡하고 빠트렸네요.)

#(if (< 0 %)
   (concat (drop (rem % (count %2)) %2)
           (take (rem % (count %2)) %2))
   (concat (drop (rem (inc (- %)) (count %2)) %2)
           (take (rem (inc (- %)) (count %2)) %2)))

2014/02/21 02:50

박연오

while __name__ == '__main__':
    a = list(input('입력: ').split()); b = a[1:]
    d = (-1 if int(a[0])>=0 else 0)
    a = abs(int(a[0]))
    for i in range(a):
        tmp = b.pop(d)
        if d == -1:b[0:1] = [tmp,b[0]]
        elif d == 0:b[-1:] = [b[-1],tmp]
    print(' '.join(list(x for x in b)))

파이썬 3.5.1 입니다.

2016/03/13 11:49

Flair Sizz

파이썬3.4.2

lis = input().split()
n = int(lis[0])
leng = len(lis)-1
lis = lis[1:]*2
if n>=0:
    subj = lis[leng-n:2*leng-n]
else:
    subj = lis[-n:leng-n]
print(' '.join(subj))

2016/04/02 19:39

차우정

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

b = int(a[0])

del a[0]

if b > 0:

    for i in range(b):

        a.insert(0, a[len(a)-1])

        a.pop()

    print(" ".join(a))


if b < 0:

    for i in range(len(a)+b):

        a.insert(0, a[len(a)-1])

        a.pop()

    print(" ".join(a))


if b == 0 :

    print(" ".join(a))

2020/02/07 12:35

김희준

def L_roataion(a):
    b = int(a.pop(0))
    list2 = a[-b:]+a[:-b]
    return " ".join(list2)

a = input("첫값은 회전량, 나머지는 문자열 입력:").split(" ")
print(L_roataion(a))

2021/09/06 09:46

박대선

print ' '.join((lambda a : a[1:] if a[0] == '0' else a[-int(a[0]):] + a[1:len(a)-int(a[0])] if int(a[0]) > 0 else a[-int(a[0])+1:] + a[1:-int(a[0])+1])(raw_input('?').split()))

파이썬 2.7.6

2014/02/20 02:43

Lee SunYeop

자바로 만든 코드입니다.

첫번째 입력 값 이후로 쭉 출력하는 방법이에요.... (마지막에 도착하면 처음부터)

import java.util.Scanner;

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

        int rotation = Integer.parseInt(arg[0]);
        int length = arg.length-1;
        if(rotation > 0) {
            rotation = (arg.length-rotation)-1;
            while(length-- > 0) {
                rotation++;
                if(rotation >= arg.length) rotation = 1;
                System.out.print(arg[rotation]+" ");
            }
        }else {
            int position = rotation*-1;
            while(length-- > 0) {
                position++;
                if(position >= arg.length) position = 1;
                System.out.print(arg[position]+" ");
            }
        }
    }
}

2014/02/21 13:06

이 인욱

Ruby

def rotate(s)
  s.split(" ", 2).map{|i|i.split(" ")}.inject{|s, i|i.rotate(-s[0].to_i)}.join(" ")
end

Test

require 'test/unit'
extend Test::Unit::Assertions

assert_equal rotate("1 10 20 30 40 50"), "50 10 20 30 40"
assert_equal rotate("4 가 나 다 라 마 바 사"), "라 마 바 사 가 나 다"   
assert_equal rotate("-2 A B C D E F G"), "C D E F G A B"   
assert_equal rotate("0 똘기 떵이 호치 새초미"), "똘기 떵이 호치 새초미"   

2014/03/01 05:25

nacyot

파이썬입니다. 인덱스를 잘 이용하면 좀더 쉽게 할수 있을거 같은데..머리가 잘 안돌아가네요

deepcopy 를 이용한 방법입니다.

import copy
ainput = "0 똘기 떵이 호치 새초미"
alist = ainput.split()

rotation_key  = int(alist.pop(0))
templist = copy.deepcopy(alist)

for idx,val in enumerate(templist):
    if len(alist) <= idx + rotation_key:    
        alist[(idx + rotation_key)-len(alist)] = templist[idx]
    else:
        alist[idx+rotation_key] = templist[idx]

print(alist)

2014/03/13 13:16

무명소졸

Programming Pearls 에 소개된 reverse를 이용한 기법을 활용 해 보았습니다.

def rotate(a, n):
    n = n % len(a)
    if n>=0:
        pos = len(a) -n
    else:
        pos = -n

    left = a[:pos]
    right = a[pos:]

    left.reverse()
    right.reverse()

    ans = left+right
    ans.reverse()

    return ans


def f(s):
    t = s.split()
    go = int(t[0])
    src = t[1:]
    return rotate(src, go)


print f("1 10 20 30 40 50")
print f("-2 A B C D E F G")

2014/05/13 13:07

pahkey

# cycling_list.py

def cycling_list(input):
    list_input = input.split()
    try:
        n = int(list_input.pop(0)) % len(list_input)
        list_input = list_input[-n:] + list_input[:-n]
        return ' '.join(list_input)
    except:
        print("The first component of input must be integer.")
        return False

print(cycling_list("-2 a b c d e f g"))

Python으로 작성하였습니다.

2014/07/14 14:36

흰둥이

Python 3.4 로 작성했습니다.

input_list = input().split()
n = int(input_list[0])
list_len = len(input_list)
output_list = ['']*(list_len-1)

for x in range (1,list_len):
    y = (x+n)%(list_len -1) - 1
    output_list[y] = input_list[x]
print(" ".join(output_list))

2014/09/21 16:49

돌구늬ㅋ~썬

c#으로 작성했습니다. 간단하게 input을 한번에 받아 list로 전환하고 가장 첫 list이 음수면 좌측으로 양수면 우측으로 회전시켰습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodingDojang
{
    class ListTurn
    {

        static void Main(string[] args)
        {
            ListTurn.Answer();
            Console.Read();
        }

        public static void Answer()
        {
            List<string> list = new List<string>();
            list = Console.ReadLine().ToString().Split(' ').ToList();
            int turn = int.Parse(list[0]);
            list.RemoveAt(0);
            list = ListTurn(list, turn);
            for (int i = 0; i < list.Count; i++)
                Console.Write(list[i] + ' ');
            Console.Write('\n');
        }

        public static List<string> ListTurn(List<string> list, int turn)
        {
            if (turn < 0)
            {
                int remainder = turn % list.Count;
                for (int i = 0; i > remainder; i--)
                {
                    list.Add(list[0]);
                    list.RemoveAt(0);
                }
            }
            else
            {
                int remainder = turn % list.Count;
                for (int i = 0; i < remainder; i++)
                {
                    list.Insert(0, list[list.Count - 1]);
                    list.RemoveAt(list.Count - 1);
                }
            }
            return list;
        }


        public void ListTurn(List<string> inputs, int n)
        {
            if (n > 0) inputs.Reverse();
            var count = Math.Abs(n%inputs.Count);
            var moves = inputs.GetRange(0, count);
            inputs.RemoveRange(0, count);
            inputs.AddRange(moves);
            if (n > 0) inputs.Reverse();
        }

        public List<string> ListTurn(List<string> inputs, int n)
        {
            if (n == 0) return inputs;
            n = n%inputs.Count;
            if (n > 0) n = inputs.Count - n;
            else n = Math.Abs(n);
            var first = inputs.GetRange(0, n);
            var second = inputs.GetRange(n, inputs.Count - n);
            second.AddRange(first);
            return second;
        }

        public void ListTurn(List<string> inputs, int n)
        {
            if (n == 0) return;
            n %= inputs.Count;
            if (n > 0) inputs.Reverse();
            var temp = inputs.GetRange(0, Math.Abs(n));
            inputs.RemoveRange(0, Math.Abs(n));
            inputs.AddRange(temp);
            if (n > 0) inputs.Reverse();
        }

        public void ListTurn(List<string> inputs, int n)
        {
            if (n == 0) return;
            n %= inputs.Count;
            n = n > 0 ? inputs.Count - n : Math.Abs(n);
            var temp = inputs.GetRange(0, n);
            inputs.RemoveRange(0, n);
            inputs.AddRange(temp);
        }

    }
}

2014/10/03 10:40

Straß Böhm Jäger

Perl

sub rot{
    my($i,@a)=@_;$i*=-1;
    print "$a[nth($#a,$_)] " for($i..$i+$#a-1);
    print "$a[nth($#a,$i+$#a)]";
}
sub nth{
    my($s,$o)=@_;
    if($o<0){
        $o+=$s+1 until $o>=0;
    }
    if($o>$s){
        $o-=$s+1 until $o<=$s;
    }
    $o
}

2015/01/07 20:06

*IDLE*

python 입니다. 너무 기초적으로 푼 것 같네요.

# -*- coding: utf-8 -*- 
import unittest

def func(s):
  l = s.split(' ')
  print l
  n = int(l.pop(0)) # 회전할 숫자 
  if n >= 0 :
    for i in range(n):
      l.insert(0, l[len(l)-1])
      l.pop(len(l)-1)
  else:
    for i in range(abs(n)):
      l.insert(len(l), l[0])
      l.pop(0)

  return " ".join(l)

class Test(unittest.TestCase):
  def test1(self):
    self.assertEqual('50 10 20 30 40', func('1 10 20 30 40 50'))
    self.assertEqual('라 마 바 사 가 나 다', func('4 가 나 다 라 마 바 사'))
    self.assertEqual('C D E F G A B', func('-2 A B C D E F G'))

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

2015/01/11 20:05

Sang Brian

루비입니다.

def rotate(str)
  number, *array = str.split(" ")
  number, size = number.to_i, array.size

  case number <=> 0
  when 1
    array = array[-number, number] + array[0, size - number]
  when -1
    array = array[-number, size - number] + array[0, -number]
  end

  array.join(" ")
end

require 'test/unit'
extend Test::Unit::Assertions

assert_equal rotate("0 똘기 떵이 호치 새초미"), "똘기 떵이 호치 새초미"
assert_equal rotate("1 10 20 30 40 50"), "50 10 20 30 40"
assert_equal rotate("4 가 나 다 라 마 바 사"), "라 마 바 사 가 나 다"
assert_equal rotate("-2 A B C D E F G"), "C D E F G A B"

2015/01/13 14:50

Shim Won

def spin(st):
    l = st.split()
    d = deque(l)
    n = d.popleft()
    d2 = deque(d,len(d))
    d2.rotate(int(n))
    print(" ".join(d2))

파이썬 3.4입니다

2015/01/22 17:42

swe

    Sub Main()
        Dim src() As String = Split(Console.ReadLine, " ")

        Dim vs As New List(Of String)
        Dim d As Integer = src(0)

        vs.AddRange(src)
        vs.RemoveAt(0) '// 방향 제거

        For i As Integer = 1 To Math.Abs(d)
            If d > 0 Then
                Dim tmp As String = vs.Last
                vs.RemoveAt(vs.Count - 1)
                vs.Insert(0, tmp)
            Else
                Dim tmp As String = vs.First
                vs.RemoveAt(0)
                vs.Add(tmp)
            End If
        Next

        Console.WriteLine(String.Join(" ", vs))

        Console.ReadLine()
    End Sub

2015/06/12 19:40

Steal

옛날 생각나서 C로 해봤습니다. 하고나니깐 매우 허접하게 나오내요....

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

void reversearr(char *arr[], char*chagerarr[], int len, int standard);
int main(void)
{
    char *arr1[] = {"1", "10", "20", "30", "40", "50"};
    char *arr2[] = {"4", "가", "나", "다", "라", "마", "바", "사"};
    char *arr3[] = {"-2", "A", "B", "C", "D", "E", "F", "G"};
    char *arr4[] = {"0", "똘기", "떵이", "호치", "새초미"};

    const int len1 = sizeof(arr1)/sizeof(*arr1);
    const int len2 = sizeof(arr2)/sizeof(*arr2);
    const int len3 = sizeof(arr3)/sizeof(*arr3);
    const int len4 = sizeof(arr4)/sizeof(*arr4);

    char *changearr1[len1];
    char *changearr2[len2];
    char *changearr3[len3];
    char *changearr4[len4];
    int standard1 = 0, standard2 = 0, standard3= 0, standard4= 0, i,j, newstandard = 0;

    standard1 = atoi(arr1[0]);
    standard2 = atoi(arr2[0]);
    standard3 = atoi(arr3[0]);
    standard4 = atoi(arr4[0]);

    reversearr(arr1, changearr1, len1, standard1);
    reversearr(arr2, changearr2, len2, standard2);
    reversearr(arr3, changearr3, len3, standard3);
    reversearr(arr4, changearr4, len4, standard4);

    return 0;
}

void reversearr(char *arr[], char* changerarr[], int len, int standard)
{
    int i,j, newstandard = 0;
    if(standard >=0)
    {
        newstandard = len - standard;
        for(j =0, i=newstandard; i<len; i++, j++)
        {
            changerarr[j] = arr[i];
        }
        for(i = 1; j<len; i++, j++)
        {
            changerarr[j] = arr[i];
        }
        for(i=0; i<len-1; i++)
        {
            printf("%s ", changerarr[i]);
        }
        printf("\n");
    }
    else
    {
        newstandard = standard* -1+1;
        for(j =0, i=newstandard; i<len; i++, j++)
        {
            changerarr[j] = arr[i];
        }
        for(i = 1; j<len; i++, j++)
        {
            changerarr[j] = arr[i];
        }
        for(i=0; i<len-1; i++)
        {
            printf("%s ", changerarr[i]);
        }
        printf("\n");
    }
}

2015/07/07 22:11

ejrakssl

public class ListSpiner {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();

        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        String[] temp = line.split(" ");

        int offset = Integer.parseInt(temp[0]);
        for(int i = 1; i < temp.length; i++) {
            list.add(temp[i]);
        }

        for(int i = 0; i < list.size(); i++) {
            int index = (i - offset) % list.size();
            if(index < 0) {
                index += list.size();
            }
            System.out.print(list.get(index) + (i != list.size() - 1 ? ", " : ""));
        }
        sc.close();
    }
}

2015/07/24 14:54

고영감

    static void exce14()
    {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        String[] spl = str.split(" ");
        String[] arr = new String[spl.length - 1];
        int move = Integer.parseInt(spl[0]);

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

        move = arr.length - move;

        for (int i = 0; i < arr.length; i++)
        {
            System.out.printf("%s ", arr[(i + move) % arr.length]);
        }

    }

2015/08/25 17:26

조서현

def divider(inlist):
    palette = []
    palette = inlist.split(" ")
    rotator = int(palette.pop(0))
    palette2 = []
    for i in range (0, len(palette)):
        i = i % len(palette)
        i2 = (i + rotator) % len(palette)
        palette2.insert(i2, palette[i])
    print(palette2)
    print(palette)

parag = input()
divider(parag)

Python 3.4.3으로 짰습니다.

먼저 입력값을 input 메서드로 받은 후, 그 값을 받은 변수 parag를 함수 divider에 대입하는 구조입니다. 함수 divider는 palette라고 하는 빈 리스트를 만들며, 이 빈 리스트에는 앞서의 입력값이 split 메서드에 의해 " "(공백)을 기준으로 나뉘어 하나씩 들어가게 됩니다. 그리고 이 리스트의 첫 항은 회전을 지시하는 값이므로(e.g. '-2' -> 좌측으로 2칸 회전) pop 메서드로 따로 빼내 두어 변수 'rotator'를 선언하였습니다. 그런 다음에는 비어 있는 리스트(회전이 끝난 후의 원소들을 삽입할 공간. palette2라 이름함)를 하나 더 만들고, 반복문을 수행하였습니다. 이때, 파이썬은 음수의 인덱스도 인정하기 때문에 회전의 방향은 고려할 필요가 없었으며, 요점은 매 palette의 'i' 번 항이 palette2 리스트의 i + rotator번 항이 되도록 하여 주는 것입니다. 이때 i + rotator를 그냥 대입하면 인덱스값이 자칫 범위 밖으로 넘어갈 수 있으므로, 원래의 리스트인 palette의 길이 (len(palette))로 나누고 그 나머지를 반환하도록 해 줍니다. 이 경우, 예컨대 원래의 리스트가 5개 항을 가지고 있었다면, i + rotator는 6이 되겠지만 (i + rotator)%len(palette) 는 1이 되므로, 인덱스의 범위 내에서 원하는 대로 순환할 수 있습니다(실제로는 5, 0이 도출되겠지만 이해를 위하여 자연수로 말하였습니다). 연산 후 palette2와 palette, 양 리스트를 각각 출력해 보면 회전 상황을 알 수 있습니다.

2015/09/09 10:33

박재우

python3입니다.

userInput = input().split()
shift, lst = int(userInput[0]), userInput[1:]
print (' '.join((lst[-shift:] + lst[:(len(lst) - shift) % len(lst)])))

2015/11/23 16:20

jspark

if __name__ == '__main__':
    data = input('Enter List: ')
    data = data.split(' ')
    push = int(data.pop(0))
    data = data[-push:] + data[:-push]

    print(' '.join(data))

2015/12/30 18:50

SPJung

L = raw_input().split()
n = int(L.pop(0))
n = n/abs(n)*(abs(n)%len(L))
out_L = L[-n:]+L[:-n]
for e in out_L:
    print e,

2016/01/17 14:02

상파

inpt = raw_input("input a list, the first one being the number of rotations, divided by spaces:")
l = inpt.split(" ")
front = []
end = []
n = eval(l[0])
l.remove(l[0])
if n >0:
    front = l[len(l)-n:len(l)]
    end = l[0:len(l)-n]
elif n < 0:
    front = l[abs(n):len(l)]
    end = l[0:abs(n)]
print front + end

리스트를 짜르는 게 나은지 차례로 빈 리스트에 담는 게 나은지 고민했는데 짜르는 게 나은 것 같았습니다.

2016/01/18 16:09

취미로재미로

RUBY

rotate = ->s,list=s.split { list.rotate(-list.shift.to_i)*' ' }

Test

stay_case = "0 똘기 떵이 호치 새초미"
expect( rotate[stay_case] ).to eq "똘기 떵이 호치 새초미"

fw_case_1 = "1 10 20 30 40 50"
expect( rotate[fw_case_1] ).to eq "50 10 20 30 40"
fw_case_2 = "4 가 나 다 라 마 바 사"
expect( rotate[fw_case_2] ).to eq "라 마 바 사 가 나 다"

bw_case = "-2 A B C D E F G"  
expect( rotate[bw_case] ).to eq "C D E F G A B"

2016/01/29 20:34

rk

더럽습니다..

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXLEN 100
#define LEN 5 

int main()
{
    char nums[MAXLEN][LEN];
    char result[MAXLEN][LEN];
    int i=0, n, shift;
    char buf[MAXLEN * LEN];
    char *temp;
    memset(nums, 0x00, MAXLEN);
    memset(result, 0x00, MAXLEN);
    memset(buf, 0x00, MAXLEN * LEN);
    gets(buf);
    shift = atoi(strtok(buf, " "));
    while(1)
    {
        temp = strtok(NULL, " ");
        if (!temp) break;
        strcpy(nums[i], temp);
        i++;
    }
    n = i;
    if (shift<0) shift = n + shift;
    for(i=0;i<n;i++)
    {
        strcpy(result[(i+shift)%n], nums[i]);
    }
    for(i=0;i<n;i++)
    {
        printf("%s", result[i]);
        putchar(' ');
    }
    putchar('\n');
    return 0;
}

2016/02/12 00:40

김슈타인

흠 님 덕분에 몰랐던 memset 이랑 strtok이란 함수를 알아갑니다~ 감사합니다~ - 김종헌 , 2016/02/12 18:22
#include <stdio.h>
#include <string.h>
#define Length 100

void LRotation(int num,int i,char * str[]);

int main(void){

    int num,i;
    char arr[Length];
    char * str[10]={0};
    scanf("%d %[^\n]",&num,arr);
    if(num==0){
        printf("%s\n",arr);
        return 0;
    }   
    str[0]=strtok(arr," ");
    for(i=1;(str[i]=strtok(NULL," "))!=NULL;i++);
    LRotation(num,i,str);

}

void LRotation(int num,int i,char * str[]){

    int j;
    if(num>0){
        for(j=i-(num%i);str[j]!=NULL;j++)
            printf("%s ",str[j]);
        for(j=0;j<i-(num%i);j++)
            printf("%s ",str[j]);
        printf("\n");
    }
    else{
        for(j=(-num%i);str[j]!=NULL;j++)
            printf("%s ",str[j]);
        for(j=0;j<(-num%i);j++)
            printf("%s ",str[j]);
        printf("\n");
    }

}

2016/02/12 18:21

김종헌

void rotateList(String s) {
        List<String> list = new ArrayList<String>();
        String[] temp = s.split(" ");
        int offset = Integer.parseInt(temp[0]);

        for(int i=1; i<temp.length; i++) {
            list.add(temp[i]);
        }

        for(int i=0; i<list.size(); i++) {
            int index = (i - offset) % list.size();
            if(index < 0) {
                index += list.size();
            }
            System.out.println(list.get(index));
        }
}

참고한 코드임

2016/03/18 01:19

mozzi

python3

import collections

n, *a = input().split()
dq = collections.deque(a)
dq.rotate(int(n))
print(' '.join(dq))

2016/03/23 23:21

디디

Python 3.4

import sys

r = lambda:sys.stdin.readline()
data = r().strip().split(" ")

l = lambda x: int(x) < 0 and -1 or 1

for x in range(abs(int(data[0]))):
    if l(data[0]) > 0:
        data.insert(1, data.pop(l(data[0]) * -1))
    else: 
        data.append(data.pop(l(data[0]) * -1))

print(" ".join(data[1:]))

2016/05/04 18:28

SanghoSeo

a=input().split(" ")
vect=int(a[0])
tex=a[1:]

result=""
for i in range(len(tex)):
    ind=(i-vect)%len(tex)
    result=result+tex[ind]+" "
print(result)

front=tex[-vect:]
post=tex[:len(tex)-vect]
ans=front+post
print(" ".join(ans))

2016/05/15 09:48

Dr.Choi

문자 하나씩을 찾아서 더하는 방법과 잘라 붙이는 방법. - Dr.Choi, 2016/05/15 09:49

파이썬 3.5로 작성되었습니다.

num = input().split(' ')
new = []
#첫번째 숫자가 양수
if int(num[0]) > 0:
    for i in range(int(num[0])):
        new.insert(0, num.pop(len(num)-1))
    for i in range(1, len(num)):
        new.append(num[i])
#첫번째 숫자가 음수
elif int(num[0]) < 0:
    for i in range(abs(int(num[0]))):
        new.append(num.pop(1))
    for i in range(len(num)-1, 0, -1):
        new.insert(0, num[i])
#첫번째 숫자가 0
else:
    for i in range(1, len(num)):
        new.append(num[i])
#출력부
for i in new:
    print(i, end=" ")

또 굉장히 직관적으로 풀었습니다.

매 문제를 직관적으로 풀다보니 코드가 길어지네요. 여러가지 생각을 하는 훈련을 해야겠습니다.

많이 부족합니다. 감사합니다.

2016/06/08 15:00

greatfarmer

package main

import (
    "strings"
    "fmt"
    "strconv"
    "bufio"
    "os"
)

func main() {
    fmt.Print("Input data: ")
    r := bufio.NewScanner(os.Stdin)
    r.Scan()
    s := r.Text()

    ss := strings.Split(s, " ")
    data := ss[1:]

    v, _ := strconv.Atoi(string(ss[0]))
    if v >= 0 {
        v = len(data) - v
    } else {
        v = -v
    }
    v %= len(data)

    data2 := []string{}
    data2 = append(data2, data[v:]...)
    data2 = append(data2, data[:v]...)

    fmt.Print(data2)
}

2016/06/13 23:04

uuuuuup

GCC

j;i;main(a){char s[9];scanf("%d",&a);gets(s);if(a<0)for(;i>=a;s[j++]-32||i--);else for(j=99;i<a;s[j--]-32||i++);s[j+a/abs(a)]=0;a?printf("%s%s",s+j+(a>0)*2,s):puts(s+1);}

2016/06/27 21:37

Lotion

Delphi 2010

function fnRotateList(Shift: Integer; const C: array of String): string;
var
  i, j, cnt: Integer;
begin
  result := '';
  cnt := High(C) + 1;
  for i := 0 to cnt - 1 do
  begin
    j := (i - Shift + cnt) mod cnt;
    result := result + C[j] + ' ';
  end;

end;

procedure TForm4.btnRotateListClick(Sender: TObject);
begin
  Memo1.Lines.Add('1 10 20 30 40 50 => ' + fnRotateList(1, ['10', '20', '30', '40', '50']));
  Memo1.Lines.Add('4 가 나 다 라 마 바 사 => ' + fnRotateList(4, ['가', '나', '다', '라', '마', '바', '사']));
  Memo1.Lines.Add('-2 A B C D E F G => ' + fnRotateList(-2, ['A', 'B', 'C', 'D', 'E', 'F', 'G']));
  Memo1.Lines.Add('0 똘기 떵이 호치 새초미 => ' + fnRotateList(0, ['똘기', '떵이', '호치', '새초미']));
end;

2016/07/09 21:02

강 경수

a=str(input("입력값 : "))
list_a=a.split()
list_b=[]
a1=int(list_a.pop(0))
if a1 < 0 :
    list_a.reverse()
for i in range(abs(a1)):
    list_b+=[str(list_a.pop())]
list_b.reverse()
list_c=list_b+list_a
if a1 < 0 :
    list_c.reverse()
print(" ".join(list_c))

Python 3.5.2

2016/07/28 01:04

Zee

늅늅입니다. 자바로 풀어봤습니다.

public static void main(String args[])
    {
        SotrList("1 10 20 30 40 50");
        SotrList("4 10 20 30 40 50 60 70 80 90 100 110 120 130 140");
        SotrList("7 가 나 다 라 마 바 사 아 자 차 카 타 파 하");
        SotrList("2 A B C D E F G H I J K L M N O P");
    }

    public static void SotrList(String string)
    {
        String tempStr[] = string.split(" ");
        int startIndex = Integer.valueOf(tempStr[0]);

        for(int i = startIndex; i < tempStr.length; i++)
        {
            System.out.print(tempStr[i] + " ");
        }

        for(int i = 1; i < startIndex; i++)
        {
            System.out.print(tempStr[i] + " ");
        }

        System.out.println(" ");
    }

결과는 10 20 30 40 50
40 50 60 70 80 90 100 110 120 130 140 10 20 30
사 아 자 차 카 타 파 하 가 나 다 라 마 바
B C D E F G H I J K L M N O P A
이렇게 나옵니다.

2016/08/03 15:11

여우와향신료

링크드 리스트 연습을 위해~

#include <iostream>
#include <stdlib.h>
struct Node {
    int size;
    char* value;
    Node* next;
    Node* prv;
    int t;
};

void addlist(char val[10], int size);
void printnode(Node *node, int revC);

Node* head;
Node* end;
Node* start;
int count = 0;

void main(void) {
    char input[100];
    gets(input);

    int size = 1;
    int revcount = 0;

    start = NULL;
    head = NULL;
    end  = NULL;

    while(input[size]!=NULL) 
        size++;
    revcount = atoi(input);

    char temp[10];
    for(int k = 0; k < 10; k++)
        temp[k] = 0;
    int j = 0;
    for(int i = 2; i< size; i++) {
        if (input[i] != ' '){
            temp[j] = input[i];
            j++;
        }
        if(input[i] == ' ' || input[i+1] == NULL) {
            addlist(temp, j);
            j = 0;
            count++;
            for(int k = 0; k < 10; k++)
                temp[k] = 0;
        }
    }
    start -> next = end;
    end->prv= start;
    printnode(start, revcount);
}
void addlist(char val[10], int size) {

    Node* temp = (Node*)malloc(sizeof(Node) * 10);
    temp->size = size;
    temp->value = (char*) malloc(sizeof(char) * size);
    for(int i =0 ; i<size  ; i++)
        temp->value[i] = val[i];

    temp->next = NULL;
    temp->prv = NULL;

    if(start == NULL) 
        start = temp;

    if (head != NULL) 
        temp->next = head;
    if (end != NULL)
        end->prv = temp;

    head = temp;
    end  = temp;

}

void printnode(Node *node, int revC)
{
    int c= count;
    Node* temp = node;
    if(revC >= 0) {
        while (c > 0)
        {
            c--;
            while(revC >0) {
                temp = temp->next;
                revC--;
            }

            for(int i =0 ; i<temp->size  ; i++)
                printf("%c", temp->value[i]);
            printf(" ");

            if(revC == 0) 
                temp = temp->prv;
        }

    }

    if(revC  < 0) {
        while (c > 0)
        {
            c--;
            while(revC <= 0) {
                temp = temp->prv;
                revC++;
            }

            for(int i =0 ; i<temp->size  ; i++)
                printf("%c", temp->value[i]);
            printf(" ");
            temp = temp->prv;
        }
        printf("\n");
    }

}

2016/09/22 21:59

코딩초보

Haskell로 작성하였습니다.

doCycle n xs
    | n < 0 = take lenXS $ drop (abs n) $ cycle xs
    | n > 0 = take lenXS $ drop (lenXS - mod (abs n) lenXS) $ cycle xs
    | otherwise = xs
    where
        lenXS = length xs

strCycle n xs = do
    putStrLn $ "Input : " ++ (show n) ++ " " ++ xs
    putStrLn $ "Output : " ++ (unwords $ doCycle n $ words xs) ++ "\n"

-- test function, Just Run
main = do
    strCycle 1 "10 20 30 40 50"
    strCycle 4 "가 나 다 라 마 바 사"
    strCycle (-2) "A B C D E F G"
    strCycle 0 "똘기 떵이 호치 새초미"

결과

Input : 1 10 20 30 40 50
Output : 50 10 20 30 40

Input : 4 가 나 다 라 마 바 사
Output : 라 마 바 사 가 나 다

Input : -2 A B C D E F G
Output : C D E F G A B

Input : 0 똘기 떵이 호치 새초미
Output : 똘기 떵이 호치 새초미

2016/09/27 15:25

윤태호

            string Input = "2 가 나 다 라";
            List<String> Strs = Input.Split(' ').ToList<String>();
            int Time = int.Parse(Strs.First());
            Strs.RemoveAt(0);
            string ANS = "";
            if(Time<0)
            {
                Strs.AddRange(Strs.GetRange(0, -Time));
                Strs.RemoveRange(0, -Time);
            }
            if(Time>0)
            {
                int Count = Strs.Count;
                Strs.AddRange(Strs.GetRange(0, Count - Time));
                Strs.RemoveRange(0, Count - Time);
            }
            foreach(string str in Strs)
            {
                ANS += str+" ";
            }

2016/11/26 19:45

Choco

Prelude> let rotate n xs = let l = length xs in take l (drop (mod (-n) l) (cycle xs)) 
Prelude> let solve s = let (x:xs) = words s in unwords (rotate (read x) xs)
Prelude> solve "1 10 20 30 40 50"
"50 10 20 30 40"

2016/12/02 13:03

Han Jooyung

def loop(offset, items):
    offset = (abs(offset) % len(items)) * (-1 if offset > 0 else 1)
    return items[offset:] + items[:offset]

print(loop(1, [10, 20, 30, 40, 50]))
print(loop(4, ['가', '나', '다', '라', '마', '바', '사']))
print(loop(-2, ['A', 'B', 'C', 'D', 'E', 'F', 'G']))
print(loop(0, ['똘기', '떵이', '호치', '새초미']))

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

문자열 입력으로 다시 풀었습니다.

def loop(in_):
    in_ = in_.split(" ")
    offset = int(in_.pop(0))
    offset = (abs(offset) % len(in_)) * (-1 if offset > 0 else 1)
    return ' '.join(in_[offset:] + in_[:offset])

print(loop('1 10 20 30 40 50'))
print(loop('4 가 나 다 라 마 바 사'))
print(loop('-2 A B C D E F G'))
print(loop('0 똘기 떵이 호치 새초미'))

2016/12/02 13:56

Yeo HyungGoo

def spin_list(list_):
    dire = list_.pop(0)
    if dire >= 0:
        return [list_[x] for x in range(-dire,len(list_)-dire,1)]
    else:
        return [list_[x] for x in range(abs(dire),len(list_))]+[list_[x] for x in range(0,abs(dire))]

print(spin_list([1,10, 20, 30, 40, 50]))
print(spin_list([4, '가','나','다','라','마','바','사']))
print(spin_list([-2,'A','B','C','D','E','F','G']))
print(spin_list([0, '똘끼','떵이','호치','새초미']))

#### 2016.12.21 D-428 ####

다른분들 소스보고 다시 해보았습니다... 좀더 생각하면 충분히 간단할수도 있었던걸...ㅠㅠ 깊게 생각할시간이 부족하기도하고 여유있게 한문제에 대해서 깊에 생각해볼수있으면 좋은데 그게 잘안되네요..ㅠㅠ 군대에서 코딩할시간이 한정되있어서 ㅠㅠ 다른분들 코드가 대단합니다 ㅠㅠ..

def spin_list(list_):
    dire = list_.pop(0)
    return list_[-dire:]+list_[:-dire]

print(spin_list([1,10, 20, 30, 40, 50]))
print(spin_list([4, '가','나','다','라','마','바','사']))
print(spin_list([-2,'A','B','C','D','E','F','G']))
print(spin_list([0, '똘끼','떵이','호치','새초미']))

#### 2016.12.21 D-428 ####

2016/12/21 22:53

GunBang


#python 2.7.xx
import collections
insert = "1 10 20 30 40 50".split(" ")
def myqueue(insert):
    d = collections.deque(insert)
    d.rotate(int(d.popleft()))
    return d

print myqueue(insert)

우리에겐 Dequeue 가 있지요

2016/12/30 17:14

Daniel

# 입력 시작 #
data= input('입력 : ')
data = data.split(' ')
n= int(data[0])
data.pop(0)
# 입력 끝 #

j=1 # while loop 시작을 위한 변수 정의.

# loop started #
if n>0:
    while j<=n:
        a=data.pop(len(data)-1)
        data.insert(0,a)
        j+=1

    # 결과값 출력
    output=''
    for i in data:
        output+=str(i)+' '
    print (output)
else:
    while j<=abs(n): # n <= 0인 경우.
        a=data.pop(0)
        data.append(a)
        j+=1

    #결과값 출력
    output=''
    for i in data:
        output+=str(i)+' '
    print (output)
# loop ended #

2017/01/05 19:56

lovegalois2

l=input("input:")
k=[x for x in l.split(" ")]
k=k[-int(k[0]):]+k[-len(k)+1:-int(k[0])]
print(" ".join(k))

2017/01/08 12:55

Song Seoha

def rot(data):
    data=data.split()
    n=int(data[0])
    data=data[1:]
    result=data[-n:]
    del data[-n:]
    result+=data
    return result
rot("-2 A B C D E F G")

2017/02/14 02:01

김구경

import java.util.LinkedList;
import java.util.Scanner;

public class rotate_list {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String original = scan.nextLine();
        LinkedList<String> list = split_original(original);
        rotate_and_print(list);
    }

    private static LinkedList split_original(String original) {
        LinkedList<String> list = new LinkedList<String>();
        String[] a = original.split(" ");
        for(int b = 0; b < a.length; b++){
            list.add(a[b]);
        }
        return list;
    }

    private static void rotate_and_print(LinkedList<String> list) {
        int num = Integer.parseInt(list.poll());
        LinkedList<String> rotate_list = new LinkedList<String>();
        int size = list.size();
        for(int i = 0; i < size; i++){
            rotate_list.add(list.get(((size-num)%size+i)%size));
            System.out.print(rotate_list.get(i) + " ");
        }


    }

}

2017/02/19 21:48

KimSeonbin

public String listRounder(String input) {

        String[] inputArr = input.split(" ");

        String[] result = new String[(inputArr.length-1)];

        int startPos = Integer.parseInt(inputArr[0]);

        for(int i = 0; i <inputArr.length-1;i++){

            inputArr[i] = inputArr[i+1];
        }
        inputArr[inputArr.length-1] = "";

        for(int i = 0; i <inputArr.length-1;i++){

            if(inputArr.length-1 <= startPos){

                startPos -= (inputArr.length-1);

            }

            if( 0 > startPos){

                startPos = (inputArr.length-1) + startPos;

            }

            result[startPos] = inputArr[i];

            startPos++;
        }

        String strResult = "";
        String spc = "";

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

            strResult += (spc + result[i]);

            spc = " ";
        }

        return strResult;
    }

2017/03/07 00:16

francis

#-*- coding:utf-8 -*-

def list_rot (input):
    draft = input.split(" ")
    n = int(draft[0])
    #필요한 array만 나열
    array_input = draft[1:]

    # n이 양수일때는 pivot을 오른쪽부터 움직여서 구하고
    # n이 음수있때는 pivot을 왼쪽부터 움직여야함
    pivot = len(array_input)-n if n>0 else abs(n)

    array_front = array_input[pivot:]
    array_back = array_input[:pivot]

    f_array = array_front+array_back
    return (" ".join(f_array))

2017/03/21 21:30

daybreak

source = input(">>>")

spin = int(source.split()[0])
n = len(source.split()) - 1
res = []
for i in range(-spin, n-spin):
    res.append(source.split()[1::][i])

print(' '.join(res))

2017/05/16 16:24

Taewon Song

Python 3.6.1 입력에 대한 exception class 을 넣었습니다. 두가지의 exception 이 있습니다. 1) 회전수가 양의 정수가 아닌 경우 2) 오직 한개의 문자열일 경우. 즉, 문자가 모두 붙어 있거나 공백문자로 나누지 않은 경우

class ShortInputException(Exception):
    '''A user-defined exception class
    오직 한개의 문자열이거나 
    공백으로 문자열이 구분되어 있지 않을경우'''
    def __init__(self, length, atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast


in_str = input("Inter number & strings w/ space: ")
print("Input: {}".format(in_str))

try:
    in_list = in_str.split()
    if len(in_list) < 2:
        raise ShortInputException(len(in_list), 2)
    first_num = int(in_list.pop(0))
except ValueError:
    print("ValueError: Cycle number is not integer.")
except ShortInputException as short:
    print(("ShortInputException: The input was only " +
           "{0} string, expected at least {1}")
          .format(short.length, short.atleast))
else:
    cycle_num = abs(first_num) % len(in_list)
    if first_num < 0:
        result = in_list[cycle_num:] + in_list[:cycle_num]  # 왼쪽으로 회전
    else:
        result = in_list[-cycle_num:] + in_list[:-cycle_num]  # 오른쪽으로 회전
    print("Output: ", " ".join(result))

실행결과

C:\Users\djju\AppData\Local\Programs\Python\Python36\python.exe C:/Users/djju/PycharmProjects/test/list_cycling.py

Inter number & strings w/ space: 1 10 20 30 40 50
Input: 1 10 20 30 40 50
Output:  50 10 20 30 40

Inter number & strings w/ space: 1.0 10 20 30 40 50
Input: 1.0 10 20 30 40 50
ValueError: Cycle number is not integer.

Inter number & strings w/ space: x 10 20 30 40 50
Input: x 10 20 30 40 50
ValueError: Cycle number is not integer.

Inter number & strings w/ space: 1,10,20,30,40,50
Input: 1,10,20,30,40,50
ShortInputException: The input was only 1 string, expected at least 2

2017/05/19 05:03

예강효빠

Python 3으로 작성했습니다. 위 input의 답은 제대로 출력이 되네요.

코드:

class listCirculate:
    inputList =[]
    def getInput(self):
        inputStr = raw_input("Please Insert List: " )
        self.inputList = inputStr.split(" ")
    def printList(self):
        print(self.inputList)
    def listShift(self):
        count = int(self.inputList.pop(0))
        while count != 0:
            inputStr = self.inputList.pop(0)  if count < 0 else self.inputList.pop()
            self.inputList.insert(len(self.inputList), inputStr) if count < 0 else self.inputList.insert(0, inputStr)
            count = count + 1 if count < 0 else count - 1


if __name__ == "__main__":
    listCir = listCirculate()
    listCir.getInput()
    listCir.listShift()
    listCir.printList()

2017/05/27 11:07

Mike

example = [4,'A','B','C','D','E','F','G']
def rotatecard(original_list):
    rotation = original_list[0]
    del original_list[0]
    if rotation >= 0:
        for i in range(rotation):
            end = original_list.pop()
            original_list.insert(0,end)
    if rotation < 0:
        for i in range(abs(rotation)):
            start = original_list[0]
            del original_list[0]
            original_list.append(start)
    return ' '.join(original_list)
print(rotatecard(example))

2017/06/04 17:15

S ReolSt


def roll_array(arr,n):
    size_arr=len(arr)
    arrr=[]
    for i in range(size_arr):
        newnum=(i-n)%size_arr
        arrr.append(arr[newnum])
    print(arrr)

arr=input().split()
n=arr.pop(0)
n=int(n)
roll_array(arr,n)

2017/06/06 15:24

나후승

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("입력 :");
        String num = sc.nextLine();
        String[] num1 = num.split(" ");
        StringBuffer num2 = new StringBuffer();
        int a = Integer.parseInt(num1[0]);
        if(a>0){//양수일때
            int cnt=0;
            for(int i =num1.length-a;;i++){
                num2.append(num1[i]+" ");
                cnt++;
                if(cnt==a)break;
            }
            for(int i=1;i<num1.length-a;i++)
                num2.append(num1[i] +" ");
            System.out.println(num2.toString());

        }else if(a<0){//음수일때
            int cnt1=0;
            for(int i =Math.abs(a)+1;i<num1.length;i++)
                num2.append(num1[i]+" ");

            for(int i=1;;i++){
                num2.append(num1[i] +" ");
                cnt1++;
                if(cnt1==Math.abs(a))break;
                }
            System.out.println(num2.toString());
        }else
            for(int i=1;i<num1.length;i++){
                System.out.print(num1[i] +" ");
            }

}

2017/06/15 15:49

kihyun lee

양수/음수 상관 없이 입력 숫자 갯수로 나눈 나머지(0 <= 나머지 < n)만큼 positive rotate 하면 됩니다.

음수에 대해 mod(%)를 하면 음수가 나와서 약간의 트릭을 썼습니다.

javascript

var rotateList = function(input) {
    var inputs = input.split(" ")
    var [index, array, length, offset] = [+inputs.slice(0, 1)[0], 
                                          inputs.slice(1), 
                                          inputs.length - 1,
                                          ((index % length) + length) % length];

    return array.slice(length - offset).concat(array.slice(0, length - offset));
};

console.log(rotateList("1 10 20 30 40 50").join(" "));
console.log(rotateList("4 가 나 다 라 마 바 사").join(" "));
console.log(rotateList("-2 A B C D E F G").join(" "));
console.log(rotateList("0 똘기 떵이 호치 새초미").join(" "));

2017/06/15 21:08

funnystyle

def Rotation(text):

    text2=list(text.split(" "))

    seq = int(text2.pop(0))

    result=[]

    for i in range(len(text2)):
        result.insert((i+seq)%len(text2),(text2[i]))

    print(result)

Rotation("1 10 20 30 40 50")
Rotation("2 10 20 30 40 50")
Rotation("4 가 나 다 라 마 바 사")
Rotation("-2 A B C D E F G")

2017/07/09 21:08

semipooh

Python으로 풀었습니다.

def solve(s):
    data = s.split(' ')
    items = data[1:]
    rot = int(data[0]) % len(items)
    return items[rot:] + items[:rot]

2017/07/10 12:49

SOUP

[Python 3.6]

def rotation(inStr):
    inStrList = inStr.strip().split()
    numList = inStrList[1:]
    roCnt = int(inStrList[0]) % len(numList)
    return " ".join(numList[-roCnt:] + numList[:-roCnt])

print(rotation("1 10 20 30 40 50"))
print(rotation("4 가 나 다 라 마 바 사"))
print(rotation("-2 A B C D E F G"))
print(rotation("0 똘기 떵이 호치 새초미"))

2017/07/19 21:17

Eliya

Python: Recursion

list.pop()을 쓰는 게 출제의도에 더 적합해 보입니다만, 그냥 짧게 만들었습니다.

def rotate(rot, lst):
    if rot == 0:    return lst
    elif rot > 0:   return rotate(rot-1, [lst[-1]] + lst[:-1])
    else:           return rotate(rot+1, lst[1:] + [lst[0]])

2017/07/24 13:46

Noname

저장용 a는 옮겨질 칸 숫자이고 num은 list입니다

def pl(a,num):
    if a<0:
        for i in range(len(num)):
            print(num[(i-a+len(num))%len(num) -len(num)],end=' ')
    else:
        for i in range(len(num)):
            print(num[(i-a)%len(num)],end=' ')

2017/07/25 18:29

고든

def spin(l):
    m = []
    if l[0] > 0:
        t = l[-(l[0]):]
        m = t + l[1:-l[0]]
    else:
        t = l[1:-(l[0])+1]
        m = l[-(l[0])+1:] + t


    return m

l = [-2, 'a', 'b', 'c', 'd', 'e', 'f', 'g']
spin(l)

2017/08/02 20:28

Alberto Yeo


public class Example14 {
    public static void main(String[] args) {
        Example14 ex = new Example14();

        String s = "-10 1 2 3 4 5";
        String[] sArray = s.split(" ");
        int firstNum = Integer.parseInt(sArray[0]);

        String[] sNewArray = new String[sArray.length - 1];
        System.arraycopy(sArray, 1, sNewArray, 0, sArray.length - 1);

        System.out.println(ex.Rotation(sNewArray, firstNum));
    }

    private String Rotation(String[] sArray, int firstNum) {
        int length = sArray.length;
        String[] newArray = new String[length];

        for (int i = 0; i < length; i++) {
            if (firstNum >= 0) {
                int index = (i + firstNum) % length;
                newArray[index] = sArray[i];
            } else {
                int index = (i + firstNum) % length >= 0 ? 
                        Math.abs(i + firstNum) % length : length - Math.abs((i + firstNum) % length);
                newArray[index] = sArray[i];
            }
        }

        return String.join(" ", newArray);
    }
}

음수일때가 좀 안풀려서 억지로 풀었네요... 위에분 보니까 LinkedList로 처리하니까 훨씬 간단하네요.

2017/08/30 01:40

흑돼지

a = input('Enter the value')

b = a.split(' ')
R = int(b[0])
list1 = b[1:]
list2 = []

len = len(list1)

for i in range(len):
    list2.append(0)

if R >= len:
    l = R // len
else:
    l = 0

if '-' in a:
    for P in range(len):
        if abs(R) > len:
            R = R + len*l
        else:
            pass
        res = P + R
        if res < 0:
            res = res + len
        else:
            pass
        list2[res] = list1[P]
else:
    for P in range(len):
        res = P + R - len*l
        if res >= len:
            res = res - len
        else:
            pass
        list2[res] = list1[P]

print(list2)

Python 3

2017/09/02 14:18

검은콩

namespace _201709042
{
    class Program
    {
        static void Main(string[] args)
        {
            int turn = int.Parse(Console.ReadLine()); // 입력받은 값을 정수형으로 변환
            string[] list = Console.ReadLine().Split(' '); // 입력받은 값들을 ' '로 끊어서 리스트저장
            string last = string.Empty; 
            if (turn > 0) // turn이 0보다 크면
            {
                for (int i = 0; i < turn; i++)
                {
                    for (int a = 0; a < list.Length; a++)
                    {
                        if (a == 0)
                        {
                            last = list[a]; //첫번째값을 last에저장
                            list[a] = list[list.Length - 1]; //첫번째값에 마지막값 저장
                        }
                        else
                        {
                            string temp = list[a]; 
                            list[a] = last;  
                            last = temp; //값들의 대이동
                        }
                    }
                }
            }
            else if(turn < 0) //turn이 0보다 작으면
            {
                for (int i = turn; i < 0; i++) 
                {
                    for (int a = list.Length-1; a > -1 ; a--)
                    {
                        if (a == list.Length-1)
                        {  
                            last = list[list.Length -1];
                            list[a] = list[0];
                        }
                        else
                        {
                            string temp = list[a];
                            list[a] = last;
                            last = temp;
                        }
                    }
                }
            }
            foreach (string s in list)
            {
                Console.WriteLine(s);
            }
        }
    }
}

2017/09/04 23:27

정주영

# -*- coding: utf-8 -*-
# python 3.6


def rlst(inp):
    inp = inp.split(" ")
    (amount, lst) = (int(inp[0]), [s for s in inp[1:]])
    if abs(amount) >= len(lst):
        amount = amount % len(lst)
        if amount < 0:
            amount = len(lst) - amount
    rst = lst[-amount:] + lst[:-amount]
    return rst


print(rlst("1 10 20 30 40 50"))
print(rlst("6 10 20 30 40 50"))
print(rlst("-2 A 1 2 코딩 도장"))
print(rlst("-7 A 1 2 코딩 도장"))

2017/09/12 16:36

mohenjo


string = input()
string = string.split( )
_list = list(string)

number = []
if int(_list[0]) > 0 :
 for num in range(int(_list[0])):
  number.append(_list.pop())

 _list.remove(_list[0])

 for num in range(int(len(number))):
  _list.insert(num, number.pop())
 print(_list)

else:

 for num in range(abs(int(_list[0]))):
  _list.remove(_list[0])
  number.append(_list[0])

 _list.remove(_list[0])

 for num in range(int(len(number))):
  _list.append(number[num])
 print(_list) 

2017/09/20 18:17

rlaxorwn12

package codingdojang;

import java.util.Scanner;

public class ex14 {

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

    String parse[] = sc.nextLine().split(" ");
    String arr[] = new String[parse.length-1];

    int a=Integer.parseInt(parse[0]);;

    for(int i=1;i<parse.length;i++) {
        arr[i-1] = parse[i];
    }

    String[] res = new String[arr.length];
    int count = 0;

    if(a>=0) {
        for(int i=arr.length-a; i<arr.length; i++) {
            res[count++] = arr[i];
        }
        for(int i=0; i < arr.length-a; i++) {
            res[count++] = arr[i];
        }
    }else {
        for(int i=0-a;i<arr.length;i++) {
            res[count++] = arr[i];
        }
        for(int i=0;i<0-a;i++) {
            res[count++] = arr[i];
        }
    }

    for(int i=0; i<res.length;i++) {
        System.out.println(res[i]);
    }
}

}

2017/09/27 16:38

이병호

def lotate_1(list_2):
    list_n = list_2[1:]
    amount = list_2[0]
    lenth = len(list_n)
    serial = []
    final_1 = []
    for i in range(lenth):
        move_len = ( lenth - amount + i) % lenth
        serial.append(move_len)
    for i in serial:
        final_1.append(list_n[i])
    return final_1

list_ex = [1, 10, 20, 30, 40, 50, 60]

print (lotate_1(list_ex))

2017/10/08 21:32

Yungbin Kim

# 한글 처리 in Atom 1.21.1 + Anaconda(Python 3.6.3) on Mac
import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')

# 아래 조건에 따라 리스트를 회전하는 프로그램을 작성하시오.
# > 조건
# 입력값은 한 행의 문자열로 주어지며, 각 값은 공백으로 구분된다.
# 첫 번째 값은 리스트를 회전하는 양과 방향(음수의 경우 좌측으로, 양수의 경우 우측으로 회전)이다.
# 첫 번째 값을 제외한 나머지 값은 리스트의 각 항목의 값이다.
# 회전된 리스트를 문자열로 출력한다.
# 구현에 이용할 자료구조에 대한 조건이나 제약은 없다.
# 입력되는 리스트의 항목의 개수는 유한한다.
# > 입출력예
# 예 1)
# 입력: 1 10 20 30 40 50
# 출력: 50 10 20 30 40
# 예 2)
# 입력: 4 가 나 다 라 마 바 사
# 출력: 라 마 바 사 가 나 다
# 예 3)
# 입력: -2 A B C D E F G
# 출력: C D E F G A B
# 예 4)
# 입력: 0 똘기 떵이 호치 새초미
# 출력: 똘기 떵이 호치 새초미

input_list = input("입력 : ").split()

rotation_position = int(input_list[0]) % (len(input_list) - 1)
del(input_list[0])
print(' '.join(input_list[-rotation_position:] + input_list[0:-rotation_position]))

2017/11/05 10:22

Jace Alan


inp = [1, 10, 20, 30, 40, 50]  # input

rotate_time = inp.pop(0)

if rotate_time < 0:
    rotate_time = len(inp) + rotate_time - 1


for _ in range(rotate_time):
    inp.insert(0, inp.pop())

print(inp)

2017/11/27 23:01

Sung Kim

def rota(d):
    a=d.split(' ')
    f=int(a.pop(0))
    if f>0:
        for n in range(f):
            end=a.pop()
            a.insert(0,end)
    elif f<0:
        for i in range(abs(f)):
            str=a[0]
            del a[0]
            a.append(str)
    for x in a:
        print(x,end=' ')

2017/11/30 19:27

강상욱

def rot(tmpp):
    tmp=tmpp
    n=int(tmp[0])%(len(tmp)-1)
    tmp.pop(0)
    return(tmp[-n:]+tmp[:-n])

def isnum(tmpp):
    try:
        float(tmpp)
        return(True)
    except: return(False)

samp=['a']
while not isnum(samp[0]):
    samp=list(map(str, input('첫번째는 정수: ').split()))

print(rot(samp))

2017/12/13 16:06

빗나감

problem = "4 가 나 다 라 마 바 사".split()
cycle = int(problem.pop(0))
result = list(x for x in range(len(problem)))
for i,val in enumerate(problem):
    result[(i+cycle)%len(problem)] = val    

print(result)

2017/12/24 15:51

얏홍

import java.util.Scanner;
import java.util.Arrays;
//첫 번째 값은 리스트를 회전하는 양과 방향(음수의 경우 좌측으로, 양수의 경우 우측으로 회전)이다.
//첫 번째 값을 제외한 나머지 값은 리스트의 각 항목의 값이다
public class shiftList {
    public static void Left(int n, String[] arr) {
        if(n==0) {
            System.out.println(Arrays.toString(arr));
            return;
        }

        String s = arr[0];
        for(int i=0; i<arr.length-1; i++) {
            arr[i]=arr[i+1];
            if(i==arr.length-2)
                arr[arr.length-1]=s;
        }
        Left(n-1, arr);
    }
    public static void Right(int n, String[] arr) {
        if(n==0) {
            System.out.println(Arrays.toString(arr));
            return;
        }
        String s = arr[arr.length-1];
        for(int i=arr.length-1; i>0; i--) {
            arr[i]=arr[i-1];
            if(i==1) {
                arr[0]=s;
            }
        }
        Right(n-1, arr);
    }

    public static void main(String[] args) {
        System.out.println("몇개의 값을 입력할겁니까?");
        Scanner s = new Scanner(System.in);
        int n=s.nextInt();
        int size=n+1;
        String[] arr = new String[size];
        String[] res = new String[size-1];
        System.out.println("먼저 회전변수를 입력해주시고, 그 다음 값을 입력해주십시오.");
        for(int i=0; i< size; i++) {
            arr[i] = s.next();
        }
        s.close();
        System.out.println(Arrays.toString(arr));

        if(arr[0].charAt(0)=='0') {
            for(int i=0; i<size-1; i++) {
                arr[i] = arr[i+1];
                for(int j=0; j<size-1; j++) {
                    res[j] = arr[j];
                }
            }
            System.out.println(Arrays.toString(res));
        }
        // 좌측으로 회전
        if((int)Double.parseDouble(arr[0]) < 0) {
            int v=(int) Double.parseDouble(arr[0]);
            v=v*-1;
            for(int j=0; j<size-1; j++) {
                res[j] = arr[j+1];
            }
            Left(v, res);
        }
        // 우측으로 회전
        if((int)Double.parseDouble(arr[0]) > 0) {
            int v=(int) Double.parseDouble(arr[0]);
            for(int j=0; j<size-1; j++) {
                res[j] = arr[j+1];
            }
            Right(v, res);
        }
    }
}

2017/12/30 13:42

김기덕

파이썬 3.6

#양의 방향과 음의방향으로 이동시 각 문자열의 첫 번째 값에 따라 시작점을 찾은 후 순서에 맞게 정렬한다.
string = input(" ● 입력: ")
valuelist = string.split(' ')
newlist = []
if int(valuelist[0]) > 0:  # 양의 방향으로 회전
# 인덱스가 0부터 시작하므로 시작점값에서 1을 빼준다.
    start = len(valuelist) - int(valuelist[0]) - 1
    del valuelist[0]
    while valuelist[start]:
        newlist.append(valuelist[start])
        start += 1
        if start > len(valuelist)-1:
            break
    start = 0
    while valuelist[start]:
        newlist.append(valuelist[start])
        start += 1
        if len(newlist) == len(valuelist):
            break
    print("\n","● 출력:",' '.join(newlist))

elif int(valuelist[0]) < 0:  #음의 방향으로 회전
# 음의 방향만큼 문자열의 길이가 커지는 셈이므로 시작점 값에서 문자열 길이만큼 빼준다.
# 음의 방향만큼 이동시 '0'의 위치도 한번 이동한 셈이므로 시작점값에서 1을 빼지 않는다.
    start = (len(valuelist) - int(valuelist[0]))-len(valuelist)
# 음의 방향으로 이동시 첫 번째 요소값을 먼저 제거하고 이동한다.
    del valuelist[0]
    while valuelist[start]:
        newlist.append(valuelist[start])
        start += 1
        if start > len(valuelist)-1:
            break
    start = 0
    while valuelist[start]:
        newlist.append(valuelist[start])
        start += 1
        if len(newlist) == len(valuelist):
            break
    print("\n","● 출력:",' '.join(newlist))

else:  # 회전하지 않음
    del valuelist[0]
    print("\n","● 출력:",' '.join(valuelist))

*결과값

 ● 입력: 4 가 나 다 라 마 바 사

 ● 출력: 라 마 바 사 가 나 다
 ● 입력: -3 A B C D E F G

 ● 출력: D E F G A B C
 ● 입력: 0 똘기 떵이 호치 새초미

 ● 출력: 똘기 떵이 호치 새초미

2018/01/01 23:05

justbegin

a= input() a=a.split() cnt = int(a[0]) a=a[1:] if(cnt> 0): for i in range (0,cnt): temp=a.pop() a.insert(0,temp)

if(cnt<0): for i in range(0,abs(cnt)): temp=a[0] a.append(temp) del a[0]

print(a)

2018/01/02 14:20

김윤제

파이썬 입니다.

#sample data 
data1 = [1, 10, 20, 30, 40, 50]  #50 10 20 30 40
data2 = [4, '가', '나', '다', '라', '마', '바', '사'] #라 마 바 사 가 나 다
data3 = [-2, 'A', 'B', 'C', 'D', 'E', 'F', 'G'] #C D E F G A B
data4 = [0, '똘기', '떵이', '호치', '새초미'] #똘기 떵이 호치 새초미

#main
def rotate(r, data): 
    return data[-r:] + data[0:len(data)-r if r > 0 else abs(r)]

print(rotate(data1[0], data1[1:]))
print(rotate(data2[0], data2[1:]))
print(rotate(data3[0], data3[1:]))
print(rotate(data4[0], data4[1:]))

2018/01/03 11:48

yudong

import java.util.Scanner;

public class Rotation 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        System.out.println("이동할 수를 입력하시겠습니까 ->");
        int num = input.nextInt();

        input.nextLine();
        System.out.println("문자열을 입력하세요->");
        String number = input.nextLine();
        String[] m = number.split(" ");
        StringBuilder s = new StringBuilder();

        if(num>0)
        {
            int count =0;
            for(int j=m.length-num; j<m.length; ++j)
            {
                s.append(m[j]+" ");
                count++;
                if(j == m.length-1)
                    for(int i=0; i<m.length-count; ++i)
                        s.append(m[i]+" ");
            }
        }

        System.out.println(s.toString());
        s.setLength(0); //StringBuilder 초기화

        if(num<0)
        {
            int count=0;
            for(int i=Math.abs(num); i<m.length; ++i)
            {
                s.append(m[i]+" ");
                count++;
                if(i == m.length-1)
                    for(int j=0; j<m.length-count; ++j)
                        s.append(m[j]+" ");
            }
        }

        System.out.println(s.toString());
        s.setLength(0);  //StringBuilder 초기화

        if(num == 0)
        {
            for(int i=0; i<m.length; ++i)
                s.append(m[i]+" ");         
        }

        System.out.println(s.toString());
    }
}

2018/01/09 19:11

최태훈

파이썬으로 슬라이싱을 이용해 작성했습니다.

a = input('입력: ')
mylist=a.split(' ')
if int(mylist[0])>=0:
    for x in range(int(mylist.pop(0))):
        mylist=mylist[-1:]+mylist[:len(mylist)-1]
else:
    for x in range(int(mylist.pop(0))*(-1)):
        mylist=mylist[1:]+mylist[0:1]
print(' '.join(mylist))

2018/01/27 21:12

박종범

리스트를 앞 뒤로 잘라 붙여주면 됩니다.
+ 이든 - 이든 관계 없고
회전할 값이 원소 숫자 이상이면 나눠서 나머지를 사용합니다.

# 파이썬

input_str = input("rotate list: ")
# input_sample = "1 10 20 30 40 50"


def rotate_list(s1):
    s1 = s1.split()
    l1, rotate = s1[1:], int(s1[0])%(len(s1)-1)
    return " ".join(l1[-rotate:] + l1[:-rotate])


print(rotate_list(input_str))

2018/02/05 01:38

olclocr

def listrot(a):
    b = a[1:]
    n = int(a[0])%len(b)
    c = list()
    for i in range(len(b)):
        c.append(b[i-n])
    return c


l = input().split(' ')
print(listrot(l))

2018/02/06 11:33

김동하

num_str=input("조건값과 숫자를 입력하세요\n")

num_list=num_str.split(' ')
condition=round(int(num_list[0]))
if condition>0:
    condition=condition%(len(num_list)-1)
elif condition<0:
    condition=-(-condition%(len(num_list)-1))

num_list=num_list[1:]
len_list=len(num_list)

if condition>0:
     print(num_list[len_list-condition:]+num_list[:len_list-condition])

if condition<0:
    print(num_list[-condition:]+num_list[:-condition])

if condition==0:
    print(num_list)



2018/02/17 09:20

D B

def rotation():
    a=raw_input('type list:')
    b=a.split(' ')  
    n=int(b[0])
    b.remove(b[0])  
    m=n%len(b)
    str=""


    for x in range(len(b)-m,len(b)):
        str=str+b[x]+" "
    for x in range(0,len(b)-m):
        str=str+b[x]+" "

    print str

2018/02/19 13:25

Da ne

public class ListSpin {

    String[] strArray;
    String str;
    List<String> list = new LinkedList<String>();
    int spinNumber;

    public ListSpin(String str) {
        this.str = str;
    }

    public void StringParsing() {
        strArray = str.split(" ");
        for(int i = 0; i < strArray.length; i++) {
            list.add(strArray[i]);
        }
        spinNumber = Integer.parseInt(list.get(0));
        list.remove(0);
    }

    public void StringSpin() {
        int size = list.size();
        if(spinNumber > 0) {
            for(int i = 0; i < spinNumber; i++) {
                list.add(0,list.get(size - 1));
                list.remove(size);
            }
        } else if(spinNumber < 0) {
            spinNumber *= -1;
            for(int i = 0; i < spinNumber; i++) {
                list.add(list.get(0));
                list.remove(0);
            }
        } else {
        }
    }

    public void InfoDisplay() {
        for(String st : list) {
            System.out.print(st + " ");
        }
        System.out.println();
    }

}

2018/02/28 16:59

초초보

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

public class ListRotation {

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

        String inputLine = sc.nextLine();

        sc.close();

        List<String> list = new ArrayList<>(Arrays.asList(inputLine.split(" ")));

        int count = Integer.parseInt(list.remove(0));

        if(count >= 0){
            for(int i = 0; i<count; i++){
                list.add(0,list.remove(list.size()-1));
            }
        }else{
            for(int i = 0; i < Math.abs(count); i++){
                list.add(list.size()-1, list.remove(0));
            }
        }

        list.forEach(str -> System.out.print(str + " "));

    }
}

1 10 20 30 40 50
50 10 20 30 40 
4 가 나 다 라 마 바 사
라 마 바 사 가 나 다 
-2 A B C D E F G
C D E F G A B 
0 똘기 떵이 호치 새초미
똘기 떵이 호치 새초미 

2018/03/16 00:14

김태훈

/* 리스트 회전 */
package main

import (
    "fmt"
    "strconv"
    "strings"
)

func main() {
    ex := []string{"1 10 20 30 40 50", "4 가 나 다 라 마 바 사", "-2 A B C D E F G", "0 똘기 떵이 호치 새초미"}
    for _, v := range ex {
        fmt.Println(rotate(parse(v)))
    }
}

func parse(inp string) (int, []string) {
    spltLst := strings.Split(inp, " ")
    count, _ := strconv.Atoi(spltLst[0])
    lst := spltLst[1:]
    return count, lst
}

func rotate(r int, lst []string) string {
    mov := r % len(lst)
    if mov < 0 {
        mov = len(lst) + mov
    }
    rst := append(lst[len(lst)-mov:], lst[:len(lst)-mov]...)
    return strings.Join(rst, " ")
}

2018/03/26 22:03

mohenjo

def turn(str):
    mylist = str.split(" ")
    index_ini = mylist.pop(0)
    index = int(index_ini) % len(mylist)
    return ' '.join(mylist[-index:] + mylist[:-index])


print(turn("1 10 20 30 40 50"))
print(turn("4 가 나 다 라 마 바 사"))
print(turn("-2 A B C D E F G"))
print(turn("0 똘기 떵이 호치 새초미"))

2018/03/30 17:12

yijeong

a = input()
t = a.split()
y = []
p = int(t[0])
str1 = ""
if p > 0:
    for i in range(p):
        y.append(t[len(t) - i - 1])
    y.reverse()
    y = y + t[1 : len(t) - i -1]

if p < 0:
    y = t[-p + 1 : len(t)]
    for i in range(-p):
        y.append(t[i + 1])

if p == 0:
    y = t[1 : len(t)]

for j in y:
    str1 = str1 + j + ' '
print(str1)

2018/03/31 14:39

최성범

파이썬3

s = input('입력: ').split()

t = int(s[0])

if t > 0:
    back = s[-t:]
    front = s[1:-t]
    result = back + front
elif t == 0:
    result = s[1:]
else:
    t = abs(t)
    front = s[1:1+t]
    back = s[1+t:]
    result = back + front

print(" ".join(result))

2018/04/04 22:45

이진우

def turn():
    x=list(input('회전수와 값을 입력하세요.').split())
    k=int(x.pop(0))
    for i in range(0,abs(k)):
        if k < 0:
            a=x.pop(0)
            x=x+[a]
        else :
            a=x.pop(-1)
            x=[a]+x
    return x

2018/04/07 17:53

thuruk

List = input("문자를 입력하세요").split()
x = int(List[0])
del List[0]
for o in range(0,abs(x)):
       if x > 0:
              List.insert(0,List[len(List)-1])
              del List[len(List)-1]
       elif x < 0:
              List.append(List[0])
              del List[0]
print(" ".join(List))

2018/04/07 21:06

김영성

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

public class ListRotation {

    private static Scanner scanner;
    private static ArrayList rotatedList;

    public static void main(String[] args) {
        scanner = new Scanner(System.in);
        rotatedList = new ArrayList();
        int rotationTimes = 0;
        int startIndex = 0;
        String inputData = new String();

        //input data
        System.out.print("입력 : ");
        inputData = scanner.nextLine();
        String[] dataArr = inputData.split(" ");

        //processing
        rotationTimes = Integer.parseInt(dataArr[0]);

        if(rotationTimes<0) {
            startIndex = (-1)*rotationTimes+1;
            rotationTimes *= (-1);
        }
        else startIndex = dataArr.length - rotationTimes;

        for(int i=startIndex; i<dataArr.length;i++){
            rotatedList.add(dataArr[i]);
        }
        for(int i=1; i<startIndex; i++){
            rotatedList.add(dataArr[i]);
        }

        //output result
        for(int i=0; i<rotatedList.size();i++){
            System.out.print(rotatedList.get(i)+" ");
        }
    }
}

2018/04/07 21:17

이호영

Swift입니다.

회전 값의 제한은 없습니다. 단 내부적으로 회전값을 Int에 저장하니 이 크기에 제한됩니다.

import Foundation

let input = readLine()!.split(separator: " ")
let array = Array(input[1..<input.count])

var count = Int(input[0])!
count = count >= 0 ? array.count - (count % array.count) : -1 * count

for i in 0..<array.count {
    print( array[ (i + count) % array.count ], terminator: " ")
}
print("")

2018/04/10 01:49

졸린하마

def t():
    q = list(input('Input: ').split())
    first = int(q.pop(0))
    if first != 0:
        a = q[-first:]+q[:-first]
    else:
        a = q
    return(a)

2018/04/12 00:51

danbi

자바입니다.
    public static void main(String[] args) throws Exception { 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split(" ");
        int stand = Integer.parseInt(str[0]); // 양수인지 음수인지 기준을 잡음
        if (stand > 0) {
            stand %= str.length-1; // 기준이 배열 길이를 넘을시 배열 길이로 나머지를 얻으면됨
            stand = str.length - stand;
            for(int i=stand; i<str.length; i++)
                System.out.print(str[i] + " ");
            for(int i=1; i<stand; i++)
                System.out.print(str[i] + " ");
        } else if (stand == 0) {
            for (int i=1; i<str.length; i++)
                System.out.print(str[i] + " ");
        } else {
            stand = Math.abs(stand % (str.length-1));
            for(int i=stand+1; i<str.length; i++)
                System.out.print(str[i] + " ");
            for(int i=1; i<=stand; i++)
                System.out.print(str[i] + " ");
        }   
    }
아 첨에 양수일 때는 왼쪽으로 가는 줄 알고 그렇게 코딩했는데 똑같이 오른쪽으로 가는 거였네요. 

2018/05/05 10:52

정몽준

def RotatingString(string): lst = string.split() lst2 = lst[1:] lst3 = [] dic = {} result = ''

if int(lst[0]) == 0 :
    return string[1:]
elif int(lst[0]) > 0:
    for number in lst2:
        idx = lst2.index(number)
        new_idx = idx + int(lst[0])
        if new_idx > len(lst2) - 1 :
            new_idx = new_idx % len(lst2)
            dic[new_idx] = number
        else:
            dic[new_idx] = number
elif int(lst[0]) < 0:
    for number in lst2:
        idx = lst2.index(number)
        new_idx = idx + int(lst[0])
        if new_idx < 0:
            new_idx = len(lst2) + new_idx
            dic[new_idx] = number
        else:
            dic[new_idx] = number
print(dic)
for key in dic:
    pair = key,dic[key]
    lst3.append(pair)
lst3 = sorted(lst3, key = lambda k: k[0])
for key,value in lst3:
    result = result + str(value) + ' '
return result

print(RotatingString('4 가 나 다 라 마 바 사')) #라 마 바 사 가 나 다 print(RotatingString('-2 A B C D E F G')) # C D E F G A B print(RotatingString(' 3 E F G H A B')) # H A B E F G

2018/05/05 18:51

최우성


importi  java.util.*;

public class ListRotation {

    public static void main(String[] args) {
        List<String> ss = Arrays.asList(new Scanner(System.in).nextLine().split(" "));
        LinkedList<String> sss = new LinkedList<>(ss.subList(1, ss.size()));
        Integer r = Integer.valueOf(ss.get(0));

        while (r > 0) {
            sss.push(sss.pollLast());
            r--;
        }

        while (r < 0) {
            sss.addLast(sss.pollFirst());
            r++;
        }

        sss.forEach(i -> System.out.print(i + " "));
    }
}

2018/05/14 15:45

聂金鹏

public class ListSpiner {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();

        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        String[] temp = line.split(" ");

        int offset = Integer.parseInt(temp[0]);
        for(int i = 1; i < temp.length; i++) {
            list.add(temp[i]);
        }

        for(int i = 0; i < list.size(); i++) {
            int index = (i - offset) % list.size();
            if(index < 0) {
                index += list.size();
            }
            System.out.print(list.get(index) + (i != list.size() - 1 ? ", " : ""));
        }
        sc.close();
    }
}

2018/05/14 15:46

배혁남

def turning(*va):
    result = list(va)
    if va[0] > 0:
        result[:1] = va[va[0] * -1:]
        del result[va[0] * -1:]
    elif va[0] < 0:
        result.extend(va[1:va[0] * -1 + 1])
        del result[:va[0] * -1 + 1]
    else: del[result[0]]
    return result
for run in turning(1, 10, 20, 30, 40, 50):
    print(run, end=' ')

Python 3

2018/05/23 23:59

myyh2357

import java.util.Scanner;

public class ListRotation {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int Rotation = sc.nextInt();
        String[] List = sc.nextLine().substring(1).split(" ");
        for (int j = 0; j < Math.abs(Rotation); j++) {
            String temp = List[Rotation < 0 ? 0 : List.length - 1];
            for (int i = 0; i < List.length - 1; i++) {
                if (Rotation < 0)
                    List[i] = List[i + 1];
                else
                    List[List.length - 1 - i] = List[List.length - 2 - i];
            }
            List[Rotation < 0 ? List.length - 1 : 0] = temp;
        }
        for (int i = 0; i < List.length; i++) {
            System.out.println(List[i]);
        }
    }
}

2018/05/28 02:34

김지훈

inp = input()
inp = inp.split()
split = int(inp[0])
inp = inp[-split:]+inp[1:-split]
print(" ".join(inp))

2018/05/29 15:09

bnewkk

Python

test = [[1, 10, 20, 30, 40, 50],
        [4, "가", "나", "다", "라", "마", "바", "사"],
        [-2, "A", "B", "C", "D", "E", "F", "G"],
        [0, "똘기", "떵이", "호치", "새초미"]]
#test = input().split(' ')
for t in test:
    n = t[0]
    lst = t[1:]
    ans = list()
    if n < 0:
        n = abs(n)
        n %= len(lst)
        ans = lst[n:] + lst[:n]
    else:
        n %= len(lst)
        ans = lst[len(lst)-n:] + lst[:len(lst)-n]
    print(ans)

2018/06/01 14:39

Taesoo Kim

function rotate(input){
  let inputs = input.split(' ')
  let thisIsThatArray = inputs.slice(1)
  let firstNum= inputs[0]
  let spliceArr =thisIsThatArray.splice(-firstNum);
    spliceArr = spliceArr.concat(thisIsThatArray)
    console.log(inputs);
  return spliceArr
}

split 와 splice를 통해서 풀었습니다..
먼저 let inputs = input.split(' ' )를 통해서 입력받은 input을 빈공간을 기준으로 분리해서 각 각 배열에 저장하였습니다.  예를들어 '1 10 20 30 40 50' 을 input으로 입력받으면 inputs 은 ['1','10','20','30','40','50'] 이 됩니다.  
let thisIsThatArray = inputs.slice(1) 을 통해서,   inputs 에 입력받을 배열중 첫번 째 값인 1을 제거하였습니다. 즉 thisIsThatArray 에는 ['10','20','30','40','50'] 이 저장됩니다.
let firstNum 은 inputs.slice(1) 제거한 그 값 ,위의 예제서는 1이 저장됩니다.
let spliceArr = thisIsThatArray.splice(-firstNum) 을 설명하기전에 먼저 splice()의 첫번쨰 두번째 세번째 인자로 각 각 시작인덱스. 제거할 요소 수, 추가할 요소 를 입력 받습니다. 이뗴 첫번째 인자만 입력하고 두번째와 세번째 인자를 생략하면, 두번째 인자의 default로 최댓값이 적용이 되어서 첫번째 인자에서 지정한 인덱스보다 큰 인덱스들을 모두 제거합니다. 
이때 spliceArr 는 제거하고 남은 배열이 아니라, 제거된 그 값들로 새로운 배열이 return 됩니다. 위의 예제에서는  thisIsThatArray 는 ['10','20','30','40','50'] 이고 -firstNum은 -1입니다.  즉 배열 뒤에서 첫번째 부터 값을 제거하고 그 제거된 값들을 spliceArr에 배열로 return 하게 됩니다. 또한 thisIsThatArray의 값은 제거된 그 값을 제외한 나머지입니다. 위의 예제에서 spliceArr의 값은 ['50']입니다. thisIsThatArray의 값은['10''20','30','40']입니다..  만약 firstNum의 값이 2라면 -firstNum 은 -2가 되고,  ['10','20','30','40','50'] 에서 뒤에서 두번째 값 즉 40 부터 시작해서 배열의 끝까지 모든 값을 제거하고 그 제거도니 값으로 spliceArr에 return 됨으로, spliceArr의 값은 ['40','50']입니다 이때 thisIsArray의 값은['10','20','30']입니다.  만약 firstNum이 3이라면, spliceArr의 값은 ['30','40','50']입니다.   다시 위의 예제로 돌아가서 firstNum 는 1이 였기 대문에 -firstNum은 -1이 되고 , spliceArr는 ['50']입니다.   thIsArray의 값은 ['10','20','30','40']입니다.
그후 concat을 이용하여 spliceArr.concat(thisIsArray) 를 하면 ['50','10','20','30','40']이 나옵니다...
프로그래밍을 배운지 얼마되지 않은 완전 생초짜입니다. 무식하게 하나하나 해보다가 얻어걸린듯이 풀었습니다.. 설명을 잘 못해서 죄송합니다.

2018/06/11 23:31

채상엽

저는 가독성 좋은 파이썬에 도전합니당!ㅋㅋㅋ 그냥 회전수에 맞게 리스트 잘라서 양쪽에 붙이깅 (무한회전가능)

arr1 = input("입력: ").split()
vec, arr2 = int(arr1[0])%(len(arr1)-1), arr1[1:]
print(arr2[-vec: ] + arr2[:-vec])

2018/06/20 20:46

재즐보프

def rotate(arr,i):
    return arr[-i%len(arr):]+arr[:-i%len(arr)]

if __name__=="__main__":
    inv = input().split()
    print(rotate(inv[1:],int(inv[0])))

2018/07/08 10:11

Creator

input_list = input().split(" ")
flag = int(input_list.pop(0))

if flag > 0:
    extend = input_list[:-flag].copy()
    del input_list[:-flag]
    input_list.extend(extend)

else:
    flag = abs(flag)
    extend = input_list[:flag].copy()
    del input_list[:flag]
    input_list.extend(extend)

result = " ".join(input_list)
print(result)

2018/07/09 14:54

다크엔젤

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

namespace CD014
{
    class Program
    {
        static void Main(string[] args)
        {
            var input = Console.ReadLine();
            var result = Rotate(input);
            foreach (var val in result) { Console.Write($"{val} "); }
            Console.WriteLine();
        }

        static List<string> Rotate(string aString)
        { // 회전: Queue 클래스에서 dequeue -> enqueue (단, 문제에서의 방향과 반대임)
            // parse input
            var tmp = aString.Split().ToList();
            int rotate = int.Parse(tmp[0]);
            var q = new Queue<string>(tmp.GetRange(1, tmp.Count - 1));
            // rotate List
            int moveAmount = q.Count - rotate % q.Count;
            for (int repeat = 1; repeat <= moveAmount; repeat++) { q.Enqueue(q.Dequeue()); }
            return q.ToList();
        }
    }
}

2018/07/12 11:57

mohenjo

// 리스트 회전
package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // 첫번째입력을 받음
        String st = sc.nextLine(); // 두번째입력부터 받음
        String[] str = st.split(" "); // 공백으로 분리
        String[] str_2 = new String[str.length - 1]; // str[0]이 null 이기때문에 없애야함
        for(int i = 0; i < str_2.length; i++)
        {
            str_2[i] = str[i+1];
        }

        System.out.print("Before: ");
        for(String a : str_2)
            System.out.printf(a + " ");
        System.out.println();
        getArr(n, str_2);
    }

    public static String[] getArr(int n, String[] str)
    {
        String[] newStr = new String[str.length];
        if(n > 0)
        {
            for(int i = 0; i < str.length; i++)
            {
                newStr[(i + n) % str.length] = str[i];
            }
        }
        else if(n < 0)
        {
            for(int i = 0; i < str.length; i++)
            {
                newStr[i] = str[(i - n) % str.length];
            }
        }
        else
            newStr = str;

        System.out.print("After: ");
        for(String a : newStr)
            System.out.print(a + " ");
        return newStr;
    }
}

2018/07/12 16:28

이동수

파이썬 3

data = input("입력: ").split()
list1, m = data[1:], int(data[0])

def list_move(list1, m):
    m = m % len(list1)
    return list1[-m:] + list1[:-m]

print("before:", list1, str(m))
print("after:", list_move(list1, m))

결과

before: ['A', 'B', 'C', 'D', 'E', 'F', 'G'] -2
after: ['C', 'D', 'E', 'F', 'G', 'A', 'B']

2018/07/13 16:54

WJ K

t = input().split()
(dir,l) = (int(t[0]) , t[1:])

if dir != 0:
    p = dir % len(l)
    l = l[-p:] + l[:len(l)-p]

print(l)

2018/07/30 08:23

구름과비

180731~ kakao 알고리즘 산책

import copy
num = raw_input().split()

count = int(num.pop(0))
print(len(num))
cpy_num = copy.copy(num)#이거 주의해야함 그냥 대입하면 해당 리스트의 주소를 가리키는 리스트가 생김
for i in range(len(num)):
    print(i)
    if i+count < len(num):
        num[i] = cpy_num[i+count]
    else:
        num[i] = cpy_num[i+count-len(num)]
print(num)

2018/07/31 18:04

이용재

Python 3.7

list Indexing 이용

def t(n, a):
    r = list(a)
    if n > len(a) or -n < -len(a):
        n = n % len(a)
    if n >= 0:
        for i in range(len(a)):
            r[i] = a[i-n]
    else:
        for i in range(len(a)):
            if i-n >= len(a): r[i] = a[i-n-len(a)]
            else: r[i] = a[i-n]
    return r

2018/08/17 21:20

김건우

a=input().split()
direction=int(a[0])

b1=a[1:len(a)]
b2=[]

for i in range(len(b1)):
   b2.append(b1[(i+direction)%(len(b1))])

b3=" ".join(b2)
print(b3)

2018/08/24 09:58

JW Yoo

int num = 1;
        int temp = num;
        int[] arr = { 10, 20, 30, 40, 50 };
        num %= arr.length;
        System.out.println("입력 값 : " + temp + "\n");
        for (int i = 0; i < arr.length; i++) {
            if (num > 0) {
                if (i < num) {
                    System.out.print(arr[i - num + arr.length] + " ");
                } else {
                    System.out.print(arr[i - num] + " ");
                }
            } else {
                if (i - num > arr.length - 1) {
                    System.out.print(arr[arr.length - (i - num)] + " ");
                } else {
                    System.out.print(arr[(i - num)] + " ");
                }
            }
        }

2018/08/31 16:36

채규빈

def in_list(inl):

        num = inl[0]

        l1 = inl[1:]

        l1 = l1[-num:]+l1[:-num]



        for i in range(len(l1)): print(l1[i]),



if __name__ == "__main__":

        str1 = raw_input()

        str1 = [int(x) for x in str1.split(" ")]



        in_list(str1)

2018/09/04 21:47

오왕씨

def rotation_list(s) :
    S=s.split(" ")
    rotation_rule = int(S.pop(0))
    rotation_rule = rotation_rule % len(S)
    rotation_list = S[-rotation_rule:]+S[:-rotation_rule]

    return rotation_list

2018/11/05 22:50

쨔이

data = input("회전값과 데이터 입력:").split()
vector = int(data.pop(0))
if vector > 0 :
    data = data[-vector:]+data[:-vector]
else:
    data = data[-vector:]+data[:-vector]
print(data)

2018/11/12 15:10

배득주

from collections import deque
item_list = input("입력: ").split(" ")
items = deque(item_list[1:])
items.rotate(int(item_list[0]))
print("출력:", " ".join(items))

2018/11/14 13:50

정지환

raw = input().split()

data = raw[1:]

lr = int(raw[0])

if lr >= 0:
    for cnt in range(lr):
        right = data.pop()
        data.insert(0, right)
else:
    for cnt in range(-lr):
        left = data.pop(0)
        data.append(left)

print(" ".join(data))

2018/11/14 19:24

그사람 남한 볼 수 있어요

#리스트에서 제일 앞의문자를 빼서 제일 뒤로 넣어주는 함수
# 왼쪽으로 한칸 이동하는 함수
def func1(list1):
    char1 = list1.pop(0)
    list1.append(char1)

#리스트에서 제일 뒤에문자를 빼서 제일 앞으로 넣어주는 함수
# 오른쪽으로 한칸 이동하는 함수
def func2(list2):
    char2 = list2.pop()
    list2.insert(0,char2)

def main():
    sen_lis = input().split()
    num = int(sen_lis.pop(0))
    len_lis = len(sen_lis)
    # 처음 숫자를 5로 나눈 나머지만큼 함수를 작동시킴
    if num < 0:
        for a in range(abs(num) % len_lis):
            func1(sen_lis)
    else:
        for a in range((num) % len_lis):
            func2(sen_lis)

    print(' '.join(sen_lis))
main()

2018/11/30 15:27

현모구

def solution(str)
  arr = str.split
  n = arr.shift.to_i
  n >= 0 ? arr.unshift(*arr.pop(n.abs)).join(' ') : arr.push(*arr.shift(n.abs)).join(' ')
end

p solution('1 10 20 30 40 50')
p solution('4 가 나 다 라 마 바 사')
p solution('-2 A B C D E F G')
p solution('0 똘기 떵이 호치 새초미')

2018/12/04 13:26

zzulu

def solution(str):
    n, l = int(str.split()[0]), str.split()[1:]
    return l[-n:]+l[:-n]

2018/12/04 14:58

zzulu

import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);

        String[] temp = sc.nextLine().split(" ");
        String[] arr = new String[temp.length-1];
        String[] res = new String[temp.length-1];
        for(int f1=0;f1<arr.length;f1++)
        {
            arr[f1] = temp[f1+1];
        }

        int len = Integer.parseInt(temp[0]) %arr.length;
        System.out.println("len : "+len);
        for(int f1=0;f1<arr.length;f1++)
        {
            if(len >= 0)
            {
                res[(len +f1) % arr.length] = arr[f1];
            }
            else
            {
                res[(arr.length+len+f1) % arr.length] = arr[f1];
            }
        }

        for(int f1=0;f1<arr.length;f1++)
        {
            System.out.print(res[f1]+ " ");     
        }
    }
}

2018/12/13 18:51

김상협


f='4 가 나 다 라 마 바 사'
d=f.split(' ')
key = int(d[0])
src=d[1:]
src=src[-key:]+src[0:-key]
print(' '.join(src))

2018/12/17 21:28

S.H


message = input("회전값과 리스트 입력 : ").split()
x, list_ = int(message[0]), message[1:]
if x < 0 : x = len(list_) - abs(x)
print(' '.join(list_[len(list_) - (x%len(list_)):] + list_[0:len(list_) - (x%len(list_))]))

2019/01/05 08:51

lucky1to10

import sys

list = [x for x in sys.argv[2:]]
argv_size = len(sys.argv)-2
num = int(sys.argv[1]) % argv_size
newlist = list[-num:] + list[0:-num]
print(newlist)


2019/01/09 10:29

규 예

instr = '1 10 20 30 40 50'
instr = '4 가 나 다 라 마 바 사'
instr = '-2 A B C D E F G'
instr = '0 똘기 떵이 호치 새초미'

inval = list(instr.split())
print(inval)

op = int(inval[0])
num_seq = inval[1:]
chunk1 = []
chunk2 = []
if op > 0:
    chunk1 = num_seq[-1-(op-1):]
    chunk2 = num_seq[:-1-(op-1)]
elif op < 0:
    chunk1 = num_seq[abs(op):]
    chunk2 = num_seq[:abs(op)]
else:
    chunk1 = num_seq
for ck in chunk2:
    chunk1.append(ck)
print(chunk1)

2019/01/15 21:49

Roy

a = input().split()
num = int(a.pop(0)) % len(a)
result = []
for i in range(len(a)):
    result.append(a[-num+i])
print(' '.join(result))

2019/01/25 11:25

D.H.

function List(input){
  const splitted = input.split(' ')
  const rotateNum = Number(splitted[0])
  const list = splitted.filter((item,index)=>index>0)
  const result = []
  if(rotateNum>=0){
    for(let i = list.length-rotateNum; i<list.length;i++){
      result.push(list[i])
    }
    for(let i = 0; i<list.length-rotateNum;i++){
      result.push(list[i])
    }
  }else{
    for(let i = -rotateNum; i<list.length; i++){
      result.push(list[i])
    }
    for(let i = 0; i<-rotateNum; i++){
      result.push(list[i])
    }
  }
  return result.join(' ')
}

2019/02/14 16:58

돌도끼

def Turn_list(input):
    list = input.split(' ')
    time = int(list.pop(0))
    for i in range(abs(time)):
        if time >=0: a,b = 0, len(list)-1
        else: a,b = len(list)-1, 0
        list.insert(a, list.pop(b))
    return list     

print(Turn_list("-2 A B C D E F G"))

정석처럼..

2019/02/14 20:22

얀차

rotation_num=0
list_in = input("입력: ").split(' ')
rotation_num = int(list_in[0])
del list_in[0]

for i in range(abs(rotation_num)):
    if rotation_num>0:
        list_in.insert(0,list_in.pop(-1))
    elif rotation_num<0:
        list_in.append(list_in.pop(0))

print(list_in)

2019/02/18 09:08

namespace codingdojang__
{
    class Program
    {
        static void Main(string[] args)
        {
            List("1 10 20 30 40 50");
            List("4 가 나 다 라 마 바 사");
            List("-2 A B C D E F G");
            List("0 똘기 떵이 호치 새초미");
        }
        static void List(string input_list)
        {
            string[] list_temp = input_list.Split(' ');
            int temp = 0;
            List<string> list = new List<string> { };

            for (int i = 1; i < list_temp.Length; i++)
            {
                list.Add(list_temp[i]);
            }
            for (int i = 1; i < list_temp.Length; i++)
            {
                list.Add(list_temp[i]);
            }

            if (int.Parse(list_temp[0]) >= 0)
            {
                for (int i = 0; i < list.Count / 2; i++)
                {
                    Console.Write(list[((list.Count / 2 - (int.Parse(list_temp[0]) % list.Count)) + temp)]);
                    Console.Write(' ');
                    temp++;
                }
                Console.WriteLine(' ');
            }
            else if (int.Parse(list_temp[0]) < 0)
            {
                for (int i = 0; i < list.Count / 2; i++)
                {
                    Console.Write(list[Math.Abs(int.Parse(list_temp[0])) + temp]);
                    Console.Write(' ');
                    temp++;
                }
                Console.WriteLine(' ');
            }
        }
    }
}

2019/02/19 15:35

bat

def rotation(string):
    lst = [i for i in string.split()]
    k = int(lst[0])
    lst = lst[1:]
    if k == 0 :
        answer = lst
    else:
        answer = lst[-k:] +lst[:-k]
    return answer

2019/04/06 17:33

dodoman

#inputdata = '1 10 20 30 40 50'
#inputdata = '4 가 나 다 라 마 바 사'
inputdata = '-2 A B C D E F G'
#inputdata = '0 10 20 30 40 50'

inputList = inputdata.split()
c = int(inputList[0])
newList = []

for i in range(1,len(inputList)):
    newList.append(inputList[i])

res = [0 for i in range(len(newList))]


if i >= 0:
    for i in range(len(newList)):
        res[(i+c)%(len(newList))] = newList[i]

elif i < 0:
    c *= -1
    for i in range(len(newList)):
        res[(i+c)%len(newList)] = newList[i]

print(res)
``````{.python}

2019/04/11 17:45

Chang Hwan Kim

def rotate(n, L):
    n = n % len(L)
    print('출력:', ' '.join(L[-n:] + L[:-n]))


n, *L = input("입력: ").split()
rotate(int(n), L)
입력: 1 10 20 30 40 50
출력: 50 10 20 30 40

입력: 4 가 나 다 라 마 바 사
출력: 라 마 바 사 가 나 다

입력: -2 A B C D E F G
출력: C D E F G A B

입력: 0 똘기 떵이 호치 새초미
출력: 똘기 떵이 호치 새초미

2019/05/01 16:11

messi

나머지 연산이 핵심 그외애는 별거없습니다

#include <iostream>
#include <string>
#include <deque>
using namespace std;

int main()
{
    deque<string> deq;
    int N, K;
    int time;
    string str;
    scanf("%d %d", &N, &K);
    for(int i = 0 ; i < N ;i++)
    {
        cin >> str;
        deq.push_back(str);
    }

    time= ((K % N) + N) % N;
    for(int i = 0; i < time ; i++)
    {
        deq.push_front(deq[deq.size() - 1]);
        deq.pop_back();
    }


    for(int i = 0; i < N; i++)
        cout << deq[i] << ' ';
    return 0;
}

2019/05/02 18:38

이기준

inp=list(map(str,input().split()));jud=int(inp[0]);del inp[0];ans=''

if jud>=0:
    jud%=len(inp)
    for i in range(len(inp)):
        if len(inp)-jud+i >=len(inp):
            ans+=inp[i-jud]+' '
        else:
            ans+=inp[len(inp)-jud+i]+' ' 

else:
    jud*=-1
    jud%=len(inp)
    for i in range(len(inp)):
        if jud+i>=len(inp):
            ans+=inp[jud+i-len(inp)]+' '
        else:
            ans+=inp[jud+i]+' '  

print(ans)

아마 꽤 무식한 풀이이다라고 생각이 들읍니다. 역시 레벨1 처럼 문제가 한줄로 간결하게 끝나거나 하질을 않는군요. 더 정진하겠읍니다.

2019/05/03 23:48

암살자까마귀

def Rrotate(lis):
    temp = lis[len(lis)-1]
    for i in reversed(range(2, len(lis))):
        lis[i] = lis[i-1]
    lis[1] = temp
    return lis

def Lrotate(lis):
    temp = lis[1]
    for i in range(1, len(lis)-1):
        lis[i] = lis[i+1]
    lis[len(lis)-1] = temp
    return lis

lis = input('>>>').split(' ')

for x in range(abs(int(lis[0]))):
    if int(lis[0])>0: lis = Rrotate(lis)
    elif int(lis[0])<0: lis = Lrotate(lis)
    else: pass

print(lis[1:])

2019/05/29 13:51

이진형

def solution(text):
    t = text.split()
    t[0] = int(t[0])
    result = []

    if t[0] < 0:
        for i in range(abs(t[0])+1, len(t)):
            result.append(t[i])
        for i in range(1, abs(t[0])+1):
            result.append(t[i])
    else:
        for i in range(len(t)-t[0], len(t)):
            result.append(t[i])
        for i in range(1, len(t)-t[0]):
            result.append(t[i])

    return result


print(solution('1 10 20 30 40 50'))
print(solution('4 가 나 다 라 마 바 사'))
print(solution('-2 A B C D E F G'))
print(solution('0 똘기 떵이 호치 새초미'))


2019/07/13 00:55

최은미

python 3.7

r, *a = input("Input : ").split(' ')
r = int(r) % len(a)
print(' '.join(a[-r:] + a[:-r]))

2019/07/24 13:14

AY

a=input().split()#양수=맨뒤가 앞으로, 음수는 맨앞이 맨뒤로
c=int(a[0])
if int(a[0])<0:
    a.pop(0)
    for i in range(-c):
        b=a.pop(0)
        a.append(b)
elif int(a[0])>0:
    a.pop(0)
    for i in range(c):
        b=a.pop()
        a.insert(0,b)
print(a)

2019/07/24 19:47

유선종

def circle(str_):
    str_ = str_.split()
    target = int(str_.pop(0))
    str_ = str_[-target:] + str_[0:-target]
    return str_


str_ = input("회전할 문자열을 입력하세요: ")
lst_ = circle(str_)
print(' '.join(lst_))

2019/08/02 10:19

py_code

def cycle(a,n):
    if int(a)!=0:
        del n[0]
        new=n[-int(a):]
        del n[-int(a):]
        new.extend(n)
    else:
        del n[0]
        new=n
    return new
n=list(input("입력: ").split(' '))
print(cycle(n[0],n))

2019/08/14 15:47

박재욱

PHP

$fn = function(string $str) : string {
    $arr = explode(' ', $str);
    $tmp = intval(array_shift($arr));
    [$fn1, $fn2] = $tmp < 0 ? ['array_push', 'array_shift'] : ['array_unshift', 'array_pop'];

    foreach (range(0, $tmp) as $k) {
        if ($tmp === $k) break;
        $fn1($arr, $fn2($arr));
    }
    $result = implode(' ', $arr);
    return $result;
};

print_r($fn("1 10 20 30 40 50")); // 50 10 20 30 40
print_r($fn("4 가 나 다 라 마 바 사")); // 라 마 바 사 가 나 다
print_r($fn("-2 A B C D E F G")); // C D E F G A B
print_r($fn("0 똘기 떵이 호치 새초미")); // 똘기 떵이 호치 새초미

2019/09/11 16:06

d124412

def rotateList(L):
    answer = []
    n = L[0]
    answer.extend( L[-1*n:])
    answer.extend(L[1:-1*n])
    return answer

2019/09/14 11:26

김한길

input_list = input().split()


key = int(input_list.pop(0))


def plus_swap(n, list_name):
    length = int(len(list_name))
    return print(list_name[length - n:] + list_name[:length - n])


def minus_swap(n, list_name):
    return print(list_name[n:] + list_name[:n])


if key == 0:
    print(input_list)
elif key < 0:
    key = abs(key) % len(input_list)
    minus_swap(abs(key), input_list)
elif key > 0:
    key = key % len(input_list)
    plus_swap(key, input_list)

2019/09/14 21:40

농창

IN = input().split()
turn = int(IN[0])
List = IN[1:]
cList = List


turn = turn%len(List)
if turn > 0: cList = cList[len(List)-turn:] + cList[:len(List)-turn]
else: cList = cList[turn:] + cList[:turn]
for i in cList: print(i, end=' ')

2019/09/15 15:45

주휘상

lis = list(input("enter the list that you want to rotate: ").split(" "))

rotation = abs(int(lis[0])) % len(lis[1:])
if rotation == 0:
    lis = lis[1:]
elif int(lis[0]) >= 0:
    lis = lis[-rotation:] + lis[1:-rotation]
else:
    lis = lis[rotation+1:] + lis[1:rotation+1]

print(lis)

2019/09/24 00:48

ikc

python 3,7,4

li = input('입력값을 넣으세요:').split(' ')

rotate = int(li.pop(0))
li_result = li[:]

for i in range(len(li)):
    li_result[(i+rotate)%len(li)] = li[i]

print(" ".join(li_result))

2019/10/17 22:34

Koh KT

def lotation(rot_data):
    data = rot_data.split(" ") 
    result =""
    if int(data[0]) > 0:
        for i in range(len(data)-int(data[0]),len(data)):
            result = result + " " + data[i]
        for i in range(1,len(data)-int(data[0])):
            result = result + " " + data[i]

    elif int(data[0]) < 0 :
        for i in range(abs(int(data[0]))+1,len(data)):
            result = result + " " + data[i]
        for i in range(1,abs(int(data[0]))+1):
            result = result + " " + data[i]
    else :
        for i in range(1,len(data)):
            result = result + " " + data[i]
    print(result)


lotation("1 10 20 30 40 50")
lotation("4 가 나 다 라 마 바 사")
lotation("-2 A B C D E F G")
lotation("0 똘기 떵이 호치 새초미")

2019/10/23 22:35

semipooh

python3

def sort(ins):
  a = ins.split(' ')
  ans = []
  if int(a[0]) > 0:
    for i in a[-int(a[0]):][::-1]:
      ans.append(i) 

    for i in a[1:-int(a[0])]:
      ans.append(i)
  else:
    for i in a[-int(a[0])+1:]:
      ans.append(i)
    for i in a[1:][-int(a[0])-1::-1]:
      ans.append(i)
  answer = ' '.join(ans)
  return answer

ins1 = '1 10 20 30 40 50'
ans1 = sort(ins1)

ins2 = '-2 10 20 30 40 50'
ans2 = sort(ins2)

print('ins1:', ans1)
print('ins2:', ans2)

'ins1:', '50 10 20 30 40'
'ins2:', '30 40 50 20 10'

2019/10/28 20:29

조현우

import java.util.*;
public class 리스트회전 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String[] lines = scan.nextLine().split(" ");
        ArrayList<String> list = new ArrayList<String>();
        for(int i=0; i<lines.length; i++) {
            list.add(lines[i]);
        }
        list.remove(0);
        int count = Integer.parseInt(lines[0]);
        Collections.rotate(list, count);
        System.out.println(list);
    }
}
//Collection.rotate(list, count)를 사용하면 짧고 편하네요..

2019/11/16 15:26

big Ko

class RotateList:
    def __init__(self, raw):
        self.raw_data = raw.split(' ')
        print('입력 : ', self.raw_data)
        self.rotate_direction = int(self.raw_data.pop(0))
        self.temp = self.raw_data[:(-1 * self.rotate_direction)]
        self.raw_data[:(-1 * self.rotate_direction)] = []
        self.ans_data = []

    def rotate(self):
        self.ans_data = self.raw_data + self.temp

    def ans_print(self):
        print('출력 : ', self.ans_data)

Python 3.7

2019/12/02 11:57

DrKilling

파이썬 3.6 입니다

def shift_list(s):
    lst = s.split(" ")
    spinner = int(lst.pop(0))
    lst_spinned = lst[-spinner:] + lst[:-spinner]
    return " ".join(lst_spinned)

print(shift_list("1 10 20 30 40 50"))
print(shift_list("4 가 나 다 라 마 바 사"))
print(shift_list("-2 A B C D E F G"))
print(shift_list("0 똘기 떵이 호치 새초미"))

2019/12/04 18:46

vkospi

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

#define MAX_LENGTH 1024
int main(void)
{
    char* buf = NULL;
    int length = MAX_LENGTH;
    getline(&buf, &length, stdin);
    getchar();
    char* cuttedStr = strtok(buf, "\t"); 
    char* temp[MAX_LENGTH] = {NULL, };

    int i = 0;
    while(cuttedStr != NULL) {
        temp[i++] = cuttedStr;
        cuttedStr = strtok(NULL, "\t");
    }

    int rotateCnt = atoi(temp[0]);
    if(rotateCnt > 0) {
        while(rotateCnt != 0) {
            printf("%s\t", temp[i - rotateCnt]);
            rotateCnt--;
        }

        for(int j = 1; j < i - atoi(temp[0]); j++) {
            printf("%s\t", temp[j]);
        }
    } else if(rotateCnt < 0) {
        for(int j = (abs(rotateCnt) + 1); j < i; j++) {
            printf("%s\t", temp[j]);
        }

        for(int j = 1; j <= abs(rotateCnt); j++) {
            printf("%s\t", temp[j]);
        }
    } else {
        for(i = 1; temp[i] != NULL; i++) {
            printf("%s\t", temp[i]);
        }
    }

    putchar('\n');

    return 0;
}

2019/12/10 12:07

김엽기

# 입력값을 받고, 회전수를 rot에 저장하고 list A만 남김

A = input("회전시킬 횟수와 리스트를 입력하세요. ex) 회전횟수 a b c d e... :", )
A = A.split(' ')
rot = int(A.pop(0))

# 회전수가 양수인 경우와 음수인 경우의 풀이가 다름(index가 다름)

# 회전수가 0인 경우 그대로 출력

if rot == 0:
    print(A)

# 회전수가 양수인 경우 오른쪽 끝부터 하나씩 index 0 으로 이동해야 함

elif rot > 0:
    for i in range(0,rot):
        rotat = A.pop(-1)
        A.insert(0,rotat)

# 회전수가 음수인 경우 왼쪽 끝부터 하나씩 마지막 인덱스 뒤에 추가해야 함.

else:
    for i in range(0,abs(rot)):
        rotat = A.pop(0)
        A.append(rotat)

print(' '.join(A))

좀 직관적으로 짰는데, 훨신 간단한 코드가 많네요 배워갑니다.

2019/12/18 14:31

D.W. Choi

l = input().split(" ")
a = int(l.pop(0))
if a > len(l):
    a = len(l)/a
    l = l[-a:] + l[:-a]
else:
    a = a % len(l)
    l = l[-a:] + l[:-a]

l=' '.join(l)
print (l)

리스트 크기를 넘기면 값이안나오는 코드가 많길래 리스트를 넘어가도 정상적인값이 출력되게 작성해봣습니다

2019/12/28 01:10

뚜루꾸까까

파이썬입니다.

a = input('숫자와 문자열을 입력하시오: ')
result = a.split()
num = int(result.pop(0))
result = result[-num:] + result[:-num]

2020/01/06 23:29

Sean

data=input("문자열을 입력하십시오: ").split(" ")
rdata=data[1:]
ndata=data[1:]*abs(int(data[0]))
if int(data[0])==0:
    pass
else:
    for i in range(len(data[1:])):
        rdata[i]=ndata[i-int(data[0])]
print(" ".join(rdata))

2020/01/13 13:05

박시원

a = input("input your list")

b = a.split()
num = int(b[0])
del b[0]
c = []

for i in range(len(b)):
    if len(b)-num > len(b):
        num = num + len(b)
        c += [(b[i-num])]
    else:
        c += [(b[i - num])]
print(c)

2020/01/17 15:54

김민규

s = input().strip().split(' ')

p = int(s.pop(0)) if p > 0: for i in range(p): s.insert(0,s.pop()) print(' '.join(s)) if p < 0: for i in range(abs(p)): s.append(s.pop(0)) print(' '.join(s)) if p == 0 : print(' '.join(s))

2020/01/19 20:10

김태완

Nlist,check = list(input().split()),0
N = int(Nlist.pop(0))
Nfinish = list()
for i in range(len(Nlist)):
    Nfinish.append(0)
for i in range(len(Nlist)):
    try:
        Nfinish[i+N] = Nlist[i]
    except IndexError:
        while(True):
            try:
                Nfinish[(i+N)-(len(Nfinish)*check)] = Nlist[i]
                break
            except IndexError:
                check += 1
    check = 0

print(Nfinish)

2020/02/01 13:02

BlakeLee

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

public class ListSpin {
    public static void main(String[] args) {
        Scanner Sc = new Scanner(System.in);
        ArrayList<String> Al = new ArrayList<>();

        int input = 0;                          //회전 횟수 초기화

        System.out.print("입력: ");
        String str = Sc.nextLine();             //입력
        String[] array = str.split(" ");        //문자열 나누기
        input = Integer.parseInt(array[0]);     
        int length = array.length -1;

        for(int i =0; i<array.length; i++) {    //ArrayList에 저장
            Al.add(array[i]);
        }

        Al.remove(array[0]);                    //첫번째 인자 제거

        if(input >0) {                          //우측 회전
            for(int j = 0; j < input; j++) {
                Al.add(0, array[length-j]);
                Al.remove(length);
            }
        }

        if(input <0) {                          //좌측 회전
            for(int k = 0; k < -input; k++) {
                Al.add(array[k+1]);
                Al.remove(0);
            }
        }

        for(String l : Al ) {                   //출력
            System.out.print(l + " ");
        }
        Sc.close();
    }

}

2020/02/04 23:43

김강민

import math

a = input()

c = a.split(' ')

b = a.split(' ')

if int(b[0]) >= 0:

    k=math.ceil(int(b[0])/int(len(b) -1)) 

    b.extend(int(k) * b[1:])

    print(b[int(b[0])+1 : len(c)+int(b[0])])

else: 

    k=(math.ceil(abs(int(b[0]))/int(len(b) -1)))

    b.extend(int(k)*b[1:])

    print(b)

    print(b[abs(int(b[0]))+1 : len(c)+abs(int(b[0]))])

2020/02/14 12:13

HyukHoon Kim

python 3.8

#-*- coding:utf-8 -*-
b=input().split()    # 한글 출력을 위해 coding 삽입
a=int(b.pop(0))      # 회전수 a 와 문자열 b 정의
print(b[-a:] +b[:-a])      # 회전수가 pop된 후 문자열 

2020/03/04 22:56

mr. gimp

mylist=input().split()
n=mylist[0]
n=int(n)
del mylist[0]
n=n%len(mylist)
for i in range(n, len(mylist)):
    print(mylist[i])
for i in range(0, n):
    print(mylist[i])

2020/03/06 14:16

sotmef222

파이썬

def turning(lst):
    rond=lst[0]
    lst.pop(0)
    for i in range(abs(int(rond))):
        if int(rond) > 0: # 우회전
            temp=lst.pop(-1)
            lst=[temp]+lst
        elif int(rond) < 0: # 좌회전
            temp=lst.pop(0)
            lst=lst+[temp]
        elif int(rond) == 0: # 그대로
            lst
    return ' '.join(lst)

if __name__ == "__main__":

    sent='2 10 20 30 40 50'
    lst=sent.split(' ') 
    print(turning(lst))
    # 40 50 10 20 30

2020/03/07 03:03

data big

파이썬 입니다

i = input('회전하는 양과 방향(양수 or 음수)를 정할 수를 먼저 쓰고 뒤에는 리스트에 들어갈 값(숫자 or 문자)를 작성하라 \n'
          '(각 값의 구분은 공백으로 처리하라) :')
i = i.split()
j = []
def Check_Rotation_Direction(a):
    if int(i[0]) > 0:
        for iii in range(int(i[0])): # 회전하는 리스트 횟수
            j.append(i[len(i)+iii-int(i[0])])
        for ii in range(len(i)-1-int(i[0])): # 회전하지 않는 리스트 개수
            j.append(i[ii + 1])

    elif int(i[0]) < 0:
        for ii in range(len(i)-1-int(i[0])): # 회전하지 않는 리스트 개수
            j.append(i[ii + 1])
        for iii in range(int(i[0])): # 회전하는 리스트 횟수
            j.append(i[len(i)+iii-int(i[0])])

    else:
        j = i[1:]


    print(' '.join(j))

Check_Rotation_Direction(i)

2020/03/10 20:17

WooChan Jeon

data=input("shift data>>>").split(' ') spin=int(data.pop(0)) if spin<0: spin=abs(spin) for i in range(spin):data.append(data.pop(0)) elif spin>0: spin=abs(spin) for i in range(spin):data.insert(0, data.pop())
print(' '.join(data))

2020/03/25 14:34

배기경

a='-4 가 나 다 라 마 바 사'
l=a.split(' ')
k=int(l[0])
del l[0]
if k>0 or k<0:
    d=l[-k:]
    del l[-k:]
    l=d+l
else:
    pass
f=' '.join(l)
print(f)


파이썬 입니다. 다음에는 문자 길이 이상 회전하는 방법도 도전해보겠습니다 ^^

2020/03/29 13:36

di figo

import collections

def rotate_list(data):
    d_list = collections.deque(data[1:])
    d_list.rotate(int(data[0]))
    return d_list
data = input("input: ").split()
print("output:", " ".join(rotate_list(data)))

2020/03/31 21:05

Hwaseong Nam

while True: a = input('입력:').split() if int(a[0]) > 0: x = a[len(a) - int(a[0]):] y = a[:len(a) - int(a.pop(0))-1] r = x + y print(' '.join(r)) elif int(a[0]) < 0: x = a[abs(int(a[0]))+1:] y = a[:abs(int(a.pop(0)))] r = x + y print(' '.join(r)) elif int(a[0]) == 0: del a[0] print(' '.join(a))

2020/04/01 20:42

candy GP

의식의 흐름대로 작성해본뒤 다른분들의 작성하신 것을 보니 초라한 초보는 갈길이 먼것을 새삼느낍니다 그리고 저는 사이트 운영 또는 출제 의도와 상관없이 계속 긴코드를 적고있네요 같은 도구도 사람에 따라 다를 수 있음을 실감하고 있지만 포기않고 계속 해보겠습니다

# input_list = '1 10 20 30 40 50'.split()
# input_list = '-22 A B C D E F G'.split()
# input_list = '0 가 나 다 라 마 바 사'.split()
input_list = input('문자열을 공백으로 구분하여 입력해주세요 단, 첫번째는 숫자여야 합니다.: ').split()

# 입력된 리스트에서 정보부분과 자료 부분을 구분함
info_list = input_list[0:1]
data_list = input_list[1:len(input_list)]

# 정보부분의 값을 정수값으로 변환하고 회전 횟수를 생각함 (자료의 수와 동일한 회전은 변화가 없으므로 나머지 만큼 회전)
info_digit = int(input_list[0])
info_digit = info_digit % len(data_list)

# 문자열은 정보부분의 양수 또는 음수에 따라 오른쪽 또는 왼쪽으로 문자열을 선택후 위치를 바꿈 
if info_digit > 0:
    result_list = data_list[len(data_list)-info_digit:len(data_list)]+data_list[0:len(data_list)-info_digit]
elif info_digit < 0:
    result_list = data_list[abs(info_digit):len(data_list)] + data_list[0:abs(info_digit)]
else:
    result_list = data_list

# 문자열 형태로 출력
print(' '.join(result_list))

2020/04/03 01:44

잘해보자

a=str(input('input data....')).split(' ')
b=int(a[0])
del a[0]

for i in range (0,abs(b)):
    if b>0:
        temp=a[len(a)-1]
        del a[len(a)-1]
        a.insert(0,temp)
    elif b<0:
        temp=a[0]
        del a[0]
        a.append(temp)      

for i in range(len(a)):
    print (a[i],'',end='')

2020/04/09 01:13

Buckshot

input data....1 10 20 30 40 50 50 10 20 30 40 input data....4 가 나 다 라 마 바 사 라 마 바 사 가 나 다 input data....-2 A B C D E F G C D E F G A B input data....0 똘기 떵이 호치 새초미 똘기 떵이 호치 새초미 - Buckshot, 2020/04/09 01:14
cur=input("입력: ").split(" ")
num=int(cur[0])
cur.pop(0)
if num<0:
    for i in range(-num):
        cur.append(cur.pop(0))
else:
    for i in range(num):
        cur.insert(0,cur.pop(len(cur)-1))
print(cur)

2020/04/24 22:21

kim center


li=input('입력 : ').split()
s=int(li[0])
if int(li[0])>0:
    li1=li[-s:]+li[1:-s]
    print(li1)
if int(li[0])<0:
    li1=li[abs(s)+1:]+li[1:abs(s)+1]
    print(li1)

2020/04/25 22:23

양양짹짹

a= input("숫자와 내용을 입력하세요.").split()
n = int(a[0])
del a[0]
for i in range(len(a)):
    print( a[(len(a)-n+i)%len(a)] ,end=' ' ) 

최대한 간단하게 표현해봤는데 위의 for i in range(len(a)): 부분을 print문 안으로 집어넣을수 있나요? 해보려고 했는데 잘 안되서 .. 도움 부탁드립니다

2020/04/30 22:38

최민기

input_string = input('input strings with spaces to separate. the first one defines the direction and amplitude: ').split()
start = int(input_string.pop(0))

if start < 0:
    direct = -1
else:
    direct= 1

print([input_string[-start+i*direct] for i in range(abs(start))] + [input_string[i*direct] for i in range(len(input_string)-abs(start))])

2020/05/26 10:25

aryagaon

a=input()
a1=a.split(' ')
if int(a1[0])>0:
    b=a1[-int(a[0]):]+a1[1:-int(a[0])]
    print(' '.join(b))
else:
    b=a1[abs(int(a1[0]))+1:]+a1[1:abs(int((a1[0])))+1]
    print(' '.join(b))

2020/06/17 13:20

SREBP1c

파이썬3입니다.

stringList = str(input('type words with blank')).split()
print(stringList)
rNumber = stringList[0]
stringList.remove(rNumber)
rotatedList = stringList[-int(rNumber):] + stringList[:-int(rNumber)]
print(f'{int(rNumber)} rotated.')
print(rotatedList)

2020/06/17 13:47

누마루

데이터 입력받을때 자꾸 공백 데이터 하나가 들어가져서 짜증나서 중간에 String k = scan.nextLine(); 추가했당 아마 이 풀이가 가장 멍청한 방법일듯

package java_example_listRotation;

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

public class main {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("숫자 입력 하시오");
        int navi = scan.nextInt();
        int a=0;

        String k = scan.nextLine();

        System.out.println("데이터 입력 하시오");
        String data = scan.nextLine();
        String[] datas = data.split(" ");

        ArrayList<String> list = new ArrayList<String>();

        if(navi>0)
        {
            navi = navi%datas.length;
            for(int i=datas.length-navi;i<datas.length;i++)
                list.add(datas[i]);
            for(int i=0;i<datas.length-navi;i++)
                list.add(datas[i]);

            for(int i=0;i<list.size();i++)
                System.out.print(list.get(a++)+" ");
        }
        else {
            navi = Math.abs(navi%datas.length);
            for(int i=navi;i<datas.length;i++)
                list.add(datas[i]);
            for(int i=0;i<navi;i++)
                list.add(datas[i]);

            for(int i=0;i<list.size();i++)
                System.out.print(list.get(a++)+" ");
        }


    }

}

2020/07/21 18:28

허병우

# s = '1 10 20 30 40 50'
s = '-2 A B C D E F G'
s = '0 똘기 떵이 호치 새초미'
s = s.split(' ')
n = int(s[0])
l = s[1:]
print(' '.join(l[-n:] + l[:-n]))

2020/07/23 13:01

Chang-Hoon Lee

while True:
    a = input("리스트 회전: ")
    lista= a.split()
    if a == '그만':
        break

    def rotate_list(list_name):
        listb=list_name[1:len(list_name)]
        for i in range(1, int(list_name[0])+1):
            listb.insert(0,listb[-(i)])
        for i in range(int(list_name[0])):
            listb.pop()
        print(listb)

    def rotate_list2(list_name):
        listb=list_name[1:len(list_name)]
        for i in range(abs(int(list_name[0]))):
            listb.insert(len(listb), listb[0])
            listb.pop(0)
        print(listb)

    if int(lista[0])>0:
        rotate_list(lista)
    elif int(lista[0])<0:
        rotate_list2(lista)
    else:
        print(lista[1:len(lista)])

while구문을 넣은 이유는 입출력 예시를 여러 번 확인하기 위해서 넣었습니다.

2020/07/29 00:40

김병관

package test;
import java.util.*;

public class Test{
    public static void main(String[] args) {
        String temp; int i;
        Scanner sc = new Scanner(System.in);
        sc.close();
        String input = sc.nextLine();
        String[] arr = input.split(" ");
        int count = Integer.parseInt(arr[0]);
        ArrayList<String> list = new ArrayList<>(Arrays.asList(arr));
        list.remove(0);

        if(count > 0) {
            for(i = 0; i<count; i++) {
                temp = list.get(list.size()-1);
                list.add(0,temp);
                list.remove(list.size()-1);
            }
        }
        else if(count < 0) {
            for(i = 0; i>count; i--) {
                temp = list.get(0);
                list.add(temp);
                list.remove(0);
            }
        }
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()) {
            System.out.print(iterator.next()+" ");
        }
    }
}



2020/08/20 12:44

들산

data = input('회전수와 문자열을 입력하세요: ').split()
n = int(data.pop(0)) % len(data)
data[-n:] + data[:-n]

2020/08/27 10:53

Bbb Aaa

파이썬 3으로 만들었습니다.

def list_rotate(list):
    seq=list.pop(0)
    first=list[-seq::]
    second=list[:-seq:]
    return(first+second)

a=list_rotate([0,'똘기','떵이','호치','새초미'])
print(a)

2020/09/15 02:51

김동석

Input = input()
def lstRotate(given_str) :
    lst = given_str.split(" ")
    key = int(lst[0])
    if key > 0:
        lst1 = lst[-key:]
        lst2 = lst[1:-key]
        ans = lst1 + lst2
        return ' '.join(ans)

    else :
        lst1 = lst[-key+1:]
        lst2 = lst[1:-key+1]
        ans = lst1 +lst2
        return ' '.join(ans)
print lstRotate(Input)

2020/10/18 23:36

Centro

def f(s): t = s.split() go = int(t[0]) src = t[1:] result = [None] * len(src) for i in range(len(src)): result[(i+go) %len(src)] = src[i] return " ".join(result)

print f("1 10 20 30 40 50") print f("-2 A B C D E F G")

2020/11/04 15:30

고태욱

temp = input().split(" ")
l1 = temp[1:]
rotate = int(temp[0]) % len(l1)
l1 = [l1[-rotate + i] if rotate >= 0 else l1[-(len(l1) + rotate) + i] for i in range(len(l1))]
print(" ".join(l1))

2020/11/23 17:26

김우석

def rotate(text):
    temp_a = int(text.split()[0])
    temp_b = text.split()[1::]
    result = []

    for i in range(len(temp_b)):
        try:
            result.append(temp_b[i-temp_a])
        except:
            i = i - len(temp_b)
            result.append(temp_b[i-temp_a])
    print("".join(result))


rotate('4 가 나 다 라 마 바 사')

2020/12/01 08:48

DSHIN

def list_turn(list):

  num=list[0]

  if num<0:

    while num!=0:

      list.append(list[1])

      del list[1]

      num+=1

    return list[1:]

  else:

    while num!=0:

      list.insert(1,list[-1])

      list.pop()

      num-=1

    return list[1:]

print(list_turn([1,10,20,30,40,50]))

2020/12/12 16:49

전준혁

이거 가지고 생각보다 고민을 많이했는데... 어쩔 수 없이 그냥 조건을 제 멋대로 완화시켜서 코딩했습니다...
첫 인자로서 List의 갯수를 입력했고 나머지는 같습니다.
또한 int형밖에 안되고 char, char*까지 하려면... template class 먼가 써야지 제 머리로 될거 같아서 그냥 포기했습니다.

#include <iostream>
using namespace std;

int *msg;

int main() {
    int cnt;
    cin >> cnt;
    msg = new int[cnt];
    int rot;
    cin >> rot;
    for(int i =0;i<cnt;i++) {
        cin >> msg[i];
    }
    int tmp;
    if (rot>0) {
        while(rot--) {
            tmp = msg[cnt-1];
            for(int i =cnt-2;i>=0;i--) {
                msg[i+1]=msg[i];
            }
            msg[0]=tmp;
        }
    }
    else {
        rot = -rot;
        while(rot--) {
            tmp = msg[0];
            for(int i =0;i<cnt-1;i++) {
                msg[i]=msg[i+1];
            }
            msg[cnt-1]=tmp;
        }
    }

    for(int i =0;i<cnt;i++) {
        cout << msg[i] << " ";
    }
}

2020/12/22 23:05

배민준

arr = input().split(" ")
n = int(arr[0])
arr = arr[1:]
carr = arr[:]
if(n > len(arr)):n= n % 5 
if(n > 0):
    for i in range(0, n):
        for j in range(0,len(arr)):
            if(j == len(arr) - 1):
                carr[0] = arr[j]
            else:
                carr[j+1] = arr[j]
        arr = carr[:]
elif(n == 0):pass
else:
    for i in range(0, abs(n)):
        for j in range(0,len(arr)):
            if(j == 0):
                carr[len(arr) - 1] = arr[j]
            else:
                carr[j-1] = arr[j]
        arr = carr[:]
print(arr)

2020/12/28 16:09

guma go

def array(data):
    x = [(lambda x: int(x))(n) for n in data.split()]
    x_ = x[1:]
    num = x[0]%len(x_)
    if num==0:
        return x_
    else:
        return x_[-num:]+x_[:len(x_)-num]

2020/12/28 22:54

hankyu

def rotate(num, str):
    str = str.split(' ')
    str = str[-num:] + str[0:-num]
    print(" ".join(str))

rotate(1, '10 20 30 40 50')
rotate(4, '가 나 다 라 마 바 사')
rotate(-2, 'A B C D E F G')
rotate(0, '똘기 떵이 호치 새초미')

2021/02/03 21:32

fox.j

string_input = input("입력 : ").split()
rotation_value = int(string_input.pop(0)) % len(string_input)


for i in range(rotation_value):
    tempt = string_input[i]
    string_input[i] = string_input[-rotation_value + i]
    string_input.insert(i+1, tempt)
    del string_input[-rotation_value + i]

print(string_input)

2021/02/21 15:29

지누

x=input('입력')

xlist=x.split(' ')
result=[]

if int(xlist[0]) > 0 :
    if xlist[0] == '1':
        result.append(xlist[-1])
    else:
        for i in range(-int(xlist[0]), 0):
                       result.append(xlist[i])
    for n in range(1,len(xlist)-int(xlist[0])):
        result.append(xlist[n])

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

if int(xlist[0]) < 0 :
    if xlist[0] == '-1':
        for i in range(2, len(xlist)):
            result.append(xlist[i])
        result.append(xlist[1])
    else:
        for i in range(abs(int(xlist[0]))+1, len(xlist)):
            result.append(xlist[i])
        for n in range(1, abs(int(xlist[0]))+1):
            result.append(xlist[n])

print(' '.join(result))

2021/03/15 09:50

최우진

def makeAns(_str):
    list1 = _str.split(" ")
    tmp1 = int(list1.pop(0))
    list2 = list1[tmp1:len(list1)] + list1[0:tmp1]
    print(" ".join(list2))

makeAns("5 가 나 다 라 마 바 사 아")
makeAns("2 A B C D E F G H")

결과
바 사 아 가 나 다 라 마
C D E F G H A B

2021/04/20 16:08

와장창

# collections.deque 를 사용하여 생각의 흐름대로 작성해 보았습니다.

import collections

def list_rotate(list_a,rot_no):
    deq = collections.deque(list_a)
    deq.rotate(rot_no)
    return list(deq)

inputs = input().split()
rot_no = int(inputs[0])

a = list_rotate(inputs[1:],rot_no)
print("Output :", " ".join(a))

2021/04/28 11:29

최태호

a = input('공백구분 :')
l = a.split()
a_l = int(l.pop(0))
L = []

if a_l <= 0 :
    L.extend(l[abs(a_l):])
    L.extend(l[:abs(a_l)])
else : 
    L.extend(l)
    L.extend(l[:len(l)-a_l])
    del L[:len(l)-a_l]

print(L)

2021/05/24 17:48

약사의혼자말

a = input("입력: ").split(' ')
i = int(a[0])
a[0] = i
f = len(a)

if a[0] > 0:
    print("출력: ",a[i:f]+a[1:i-1])
elif a[0] < 0:
    print("출력: ",a[-i+1:f]+a[1:-i+1])
elif a[0] == 0:
    print("출력: ",a[1:f])

머리가 바쁘면 손발이 고생한다는데 deque 모듈과 pop을 사용할 생각을 못했네요 ㅜㅠ

2021/05/26 23:25

ss2663

#codingdojing_last rotation
#terminal에서 바로 돌리는 방식

import sys

rotation_type = sys.argv[1]
numbers = sys.argv[2:]

i = int(rotation_type) % len(numbers)
new_output = numbers[-i:] + numbers[:-i]

print(' '.join(new_output))

2021/07/19 15:21

Jaeman Lee

public class Rotation_List {

    public static void main(String[] args) {


        List<String> input = Arrays.asList(new Scanner(System.in).nextLine().split(" "));
        LinkedList<String> amount = new LinkedList<>(ss.subList(1, ss.size()));
        Integer r = Integer.valueOf(input.get(0));
        System.out.println(r);

        while (r > 0) {
            amount.push(amount.pollLast());
            r--;
        }

        while (r < 0) {
            amount.addLast(amount.pollFirst());
            r++;
        }
        System.out.println(amount);
    }
}

2021/08/19 14:32

김보근

x=input().split()
y=int(x.pop(0)) % len(x)
if y >=0:
    print(' '.join([x[i] for i in range(-y,len(x)-y,1)]))
else:
    print(' '.join([x[i] for i in range(-(len(x)+y),-y,1)]))

2021/09/20 17:57

ninanino

def circlelist(input):
    inputlist=input.split(' ')[1:]
    step=int(input.split(' ')[0])
    outputlist=[]
    for i in range(-step,-step+len(inputlist)):
        outputlist.append(inputlist[i%len(inputlist)])
    return " ".join(outputlist)

2021/09/21 02:24

이성연

inp=input("input: ").split()
n=int(inp[0])
print(' '.join(inp[-n:]+inp[1:-n])) if n>0 else print(' '.join(inp[-n+1:]+inp[1:-n+1]))

마음에 들게 짜여진 것 같네요

2021/10/12 23:29

LSW

a= list(input().split(' '))
b=int(a[0])
del a[0]
index=0
if b>0:
  for i in range(b):
    a.insert(0, a[-1])
    del a[-1]

elif b<0:
  for i in range(-b):
    a.append(a[index])
    del a[index]


print(' '.join(a))

insert처음 썼는데 넘 유용하군

2021/10/20 13:18

ottato

static void rotation(String x) {
        String[] str = new String[x.split(" ").length];
        str = x.split(" ");
        int num = str.length, y = 0;
        System.out.println(Arrays.toString(x.split(" ")));
        if (Integer.parseInt(str[0]) > 0) {
            y = num - Integer.parseInt(str[0]);
        } else {
            y = num - Integer.parseInt(str[0]) + 1;
        }
        for (int i = 0; i < str.length - 1; i++) {
            if (y % str.length == 0) {
                y += 1;
                System.out.print(str[y % str.length] + " ");
            } else
                System.out.print(str[y % str.length] + " ");
            ++y;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        rotation("1 10 20 30 40 50");
        rotation("4 가 나 다 라 마 바 사");
        rotation("-2 A B C D E F G");
        rotation("0 똘기 떵이 호치 새초미");

    }

2021/10/25 00:29

박대현

var input = '-10 가 나 다 라 마 바 사';
var startNum = input.split(" ")[0];

var inputArr = new Array();

for(var i = 1; i < input.split(" ").length; i++) {
    inputArr.push(input.split(" ")[i]);
}

startNum = startNum < 0 ? startNum * - 1 : inputArr.length - startNum;
startNum = startNum < 0 ? inputArr.length - (startNum * - 1) : startNum;
startNum = startNum > inputArr.length ? startNum - inputArr.length : startNum;

var result = new Array();

for(var i = startNum; i < inputArr.length; i++) {
    result.push(inputArr[i]);
}

for(var i = 0; i < startNum; i++) {
    result.push(inputArr[i]);
}

2021/11/18 16:24

KHH Coder

자바스크립트로 작성하였습니다.

자바스크립트의 배열에 관한 메서드들을 오랜만에 다시보니 헤깔리기도 하고 다시금 공부가 되기도 하네요.

const cycle = (string) => {  
  let firstArr = string.split(" ");
  let startNumber = firstArr[0]
  firstArr = firstArr.slice(1);
  let resultArr;
  if(startNumber >= 0) {
    resultArr = firstArr.splice(-startNumber)
    resultArr = resultArr.concat(firstArr)
  } else {
    startNumber = -Number(startNumber)
    resultArr = firstArr.splice(0, startNumber)
    resultArr = firstArr.concat(resultArr)
  }
  console.log(resultArr)    
}

cycle("1 10 20 30 40 50");
cycle("4 가 나 다 라 마 바 사");
cycle("-2 A B C D E F G");
cycle("0 똘기 떵이 호치 새초미")

2021/11/25 17:22

유정효


a= input("입력해주세요(원소는 띄어쓰기로 구분)").split(" ")
n = int(a[0])
a.remove(a[0])
b =[]


for i in range(len(a))  :

    if n > 0 :
        k = n%len(a)
        b.append(a[i-k])
    elif n < 0 : 
        k = -abs(n)%len(a)
        b.append(a[i-k])

    else : 
        b= a

print(b)

2021/12/20 12:01

양캠부부

from collections import deque as dq
user = dq(input('Input your list : ').split())
temp = int(user[0])
user.rotate(int(user[0]))
user.remove(user[temp])
print(*user)

2022/01/02 16:22

bryn0726

input_list = input("입력 : ")
input_list = input_list.split()

rotation = int(input_list.pop(0)) % len(input_list)
if rotation < 0 : rotation = -(len(input_list)+rotation)
result_list = []

for i in range(0,len(input_list)):
    result_list.append(input_list[i-rotation])

print("출력 : ",result_list)

2022/01/05 17:47

강태호

text = input('회전수와 문자열을 입력하세요 : ').split()

# 회전수가 문자열의 길이를 초과하면 오류가 발생하는데, 문자열 길이 만큼 순환한다는 점에 착안하여 나누기를 해주었음.
cycle = int(text.pop(0)) % len(text)

answer = [] # 답을 입력할 배열 정의

# 회전을 하게 되면 마이너스 회전 수 부터 배열이 시작하게 되므로 range(-cycle, len(text)-cycle)로 반복을 하게 하였음.
for i in range(-cycle, len(text)-cycle):
    answer.append(text[i]) # 배열 answer에 차례대로 값을 추가해줌.
print(' '.join(answer))

2022/01/13 17:21

ㅎㅎ

text = input('회전수와 문자열을 입력하세요 : ').split() # 회전수와 문자열을 입력받는다

answer = [] # 출력 값을 입력할 리스트 answer을 정의한다.

for i in range(len(text)): # 입력받은 text의 길이만큼 반복문을 실행한다
    if i == 0: # 첫번째 값은 회전 수이다.
        try:
            cycle = int(text[i]) # 회전 수를 cycle 변수에 입력한다.
        except ValueError:
            print('첫번째 값은 정수를 입력하여야 합니다.') # try except문으로 정수가 아닌 값을 입력 시 오류메세지를 출력한다.
            break
    else: # 두번째 값부터는 리스트 answer에 값을 append 해준다.
        answer.append(text[i])

if cycle > 0: # 회전 수가 양수인 경우
    while cycle > 0: # 회전수가 0보다 큰 경우에 반복한다.
        answer.insert(0, answer[len(answer) - 1]) # 리스트 answer의 가장 마지막 값을 0번째 자리에 insert로 넣어주고,
        answer.pop(len(answer) - 1) # 리스트 answer의 가장 마지막 값을 pop로 삭제한다.
        cycle -= 1 # 그리고 cycle 값을 -1 해준다.
elif cycle < 0: # 회전 수가 음수인 경우
    while cycle < 0: # 회전수가 0보다 작은 경우에 반복한다.
        answer.append(answer[0]) # 리스트 answer의 가장 첫번째 값을 자기자신에게 append로 추가해주고,
        answer.pop(0) # 리스트 answer의 가장 첫번째 값을 pop로 삭제한다.
        cycle += 1 # 그리고 cycle 값을 +1 해준다.

print('결과 : ' + ' '.join(answer)) # 결과 출력

2022/01/14 17:10

ㅎㅎ

// Rust

// 벡터 어디를 잘라낼지만 계산하면 됩니다

fn list_rotation() {

// let mut input_ = String::new();
// std::io::stdin().read_line(&mut input_).expect("input error");    // /n포함
// let mut input_ = input_.trim().split_whitespace();
let input_ = ["1 10 20 30 40 50", "4 가 나 다 라 마 바 사", "-2 A B C D E F G"];

for input in input_ {
    let mut iter = input.split_whitespace();
    let dir = iter.next().unwrap().parse::<i32>().unwrap();
    let mut arr: Vec<&str> = iter.collect();

    let mut idx = arr.len() as i32 - dir;
    idx %= arr.len() as i32;
    let mut front = arr.split_off(idx as usize);
    front.extend(arr);
    println!("\n{:?}", front);
}

}

2022/01/26 22:38

JW KIM

n, a = 4 ,  '가 나 다 라 마 바 사'
b=a.split(' ')
print(''.join([b[(x-n)%len(b)] for x in range(len(b))]))

2022/02/07 18:55

로만가

def rotator(a):
    a = a.split()
    rotate = int(a.pop(0))
    for i in range(len(a) - rotate):
        a_temp = str(a.pop(0))
        a.append(a_temp)

    a_output = ' '.join(a)
    print('출력:',a_output)


inputstr = ['1 10 20 30 40 50','4 가 나 다 라 마 바 사','-2 A B C D E F G','0 똘기 떵이 호치 새초미']
for i in inputstr:
    print('입력:',i)
    rotator(i)

2022/02/15 18:13

엄태용

참고한 코드입니다 .```{.java} package org.javaturotials.ex; import java.util.*;

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

Scanner sc =new Scanner(System.in);

String str = sc.nextLine();

String[] arr = str.split(" ");

String[] arr2 = new String[arr.length-1];

int a = Integer.parseInt(arr[0]);

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

    arr2[i] = arr[i+1];

}

a = arr2.length - a;

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

    System.out.printf(arr2[( i + a ) % arr2.length] + " ");}

}
}

```

2022/02/18 16:19

Kkubuck

user_input = input('입력하시오: ').split()

def change_list(data):
    n = int(data.pop(0))
    result = data[-n:] + data[:-n]
    return " ".join(result)

print(change_list(user_input))

2022/02/19 16:00

김정원

# deque 모듈 사용 deque.rotate(숫자) 숫자만큼 회전 양수: 시계방향 음수: 반시계방향

from collections import deque

user_input = deque(input("입력하시오: ").split(" "))

def cycle_list(data):
    n = int(data.popleft())
    n = n % len(data) 
    data.rotate(n)
    return "Out put : {}".format(" ".join(data))


print(cycle_list(user_input))

2022/02/19 16:37

김정원

두 가지 방법으로 풀어보았습니다.

seq='2 1 2 3 4 5 6'
seq_l=seq.split(' ')
rot_num=int(seq_l.pop(0))%len(seq_l) # %를 이용하여 수가 회전수가 높아지면 결과가 다르게 나오는 것 방지.

#리스트를 둘로 나눠 반대로 붙이는 방법.
print(seq_l)
new_seq=seq_l[len(seq_l)-rot_num:]+seq_l[:len(seq_l)-rot_num]
print(''.join(new_seq))
seq='-2 1 2 3 4 5 6'
seq_l=seq.split(' ')
rot_num=int(seq_l.pop(0))%len(seq_l) # %를 이용하여 수가 회전수가 높아지면 결과가 다르게 나오는 것 방지.

#마지막 요소를 처음으로 넣는 것을 반복하는 방법.
for times in range(0,rot_num):
    seq_l.insert(0,seq_l.pop())
print(''.join(seq_l))

2022/03/09 01:43

코딩초보박영규

sl = list(input("회전수와 문자열 입력: ").split())
sp = int(sl[0])
del sl[0]
sp = sp%len(sl)
sl = sl[-sp:]+sl[:-sp]
f=" ".join(sl)
print(f)

2022/03/15 00:08

박건호

public class RotationList2 {

    public static void main(String[] args) {

        LinkedList list = new LinkedList<>();
        Scanner sc = new Scanner(System.in);
        String[] arr = sc.nextLine().split(" ");
        int input = Integer.parseInt(arr[0]);

        for(int i=1;i<arr.length;i++) 
            list.add(arr[i]);

        Collections.rotate(list, input); // list의 요소를 input만큼 이동시키는 메서드 
        System.out.println(list);   
    }
}

2022/03/30 11:00

휴일의잠만보

def rotationList():
    # 인풋값을 리스트로 저장
    in_list = list(input().split())
    # 리스트의 첫 번째 값을 (리스트 갯수-1)로 나눈 나머지 값을 회전값으로 저장
    rotationNum = int(in_list[0])%(len(in_list)-1)
    # 회전값이 0인 경우 첫 값을 제외하고 그대로 출력
    if rotationNum == 0:
        [print(x, end=' ') for x in in_list[1:]]
    # 양의 값 또는 음의 값인 경우 출력
    else:
        [print(x, end=' ') for x in in_list[-rotationNum:]]
        [print(x, end=' ') for x in in_list[1:-rotationNum]]

2022/04/04 00:42

Charles

arr = list(map(str, input().split()))
a = arr[0]
del arr[0]

b =''
if int(a) >= 0:
    for i in range(-int(a), len(arr) - int(a)):
        b += arr[i] + ' '
    print(b)
else:
    for i in range( -int(a), len(arr)):
        b += arr[i] + ' '
    for i in range(0, -int(a)):
        b += arr[i] + ' '
    print(b)

2022/04/19 14:06

황성민

a = input("회전량과 리스트를 입력하시오.(스페이스바로 구분)\n")

a = a.split()

from collections import deque

q = deque(a[1:])

q.rotate(int(a[0]))

for i in q:
    print(i,end=' ')

2022/06/14 17:16

김시영

a=input().split(" ")
if abs(int(a[0]))>=len(a):
    print('유효한 첫번째 값 입력')
    exit
elif int(a[0])==0:
    print(a[1:])
elif int(a[0])>0:

    b= (a[-int(a[0]):])
    b.reverse()
    del a[-int(a[0]):]
    del a[0]
    for i in range(len(b)):
        a.insert(0,b[i])
    print(a)


elif int(a[0])<0:
    b = a[1:-int(a[0])+1]
    del a[1:-int(a[0])+1]
    del a[0]
    for i in range(len(b)):
        a.append(b[i])
    print(a)

2022/08/24 02:40

허명재

원래 리스트를 두 부분으로 쪼개 재조합하면 회전한 리스트가 되는 것을 이용하였습니다. python 3.10입니다.

arr = input().split()
turn = int(arr[0])
arr = arr[1:]
arr = arr[-turn:] + arr[:-turn]
for data in arr: print(data, end=' ')

실행 결과입니다.

1 10 20 30 40 50
50 10 20 30 40 

-2 a b c d e f g
c d e f g a b 

0 a b c d
a b c d 

코드의 특성상 맨 뒤에 공백 문자가 생기게 됩니다.

2022/08/28 21:06

이준우

# 014 : 리스트 회전

words = input().split()

direct_num = int(words[0])

words = words[1:]

for i in range(len(words)):
    print(words[(i-direct_num) % len(words)], end=' ')

print()

2022/10/14 14:22

Jaeyoung Moon

python 3.11 버전입니다.
a = input()

def rotate(n):
    n = n.split()
    x = int(n[0])
    del n[0]
    List = []
    if x > 0:      
        for i in range(0,len(n)):
            List.append(n[-x+i])
    return List


for i in range(0,len(rotate(a))):
    print(rotate(a)[i], end = " ")

2022/11/01 13:26

이웅기

Python. 사실상 풀었다기보다는 해답 보고 재구현한 쪽에 가깝네요. 회전을 어떻게 구현해야 할지 전혀 감이 안 왔는데, 많이 배웁니다.

list_1 = input("공백으로 구분되는 문자열 입력(첫 값은 회전 방향 및 양) : ")
splited_list = list_1.split(' ') #하나의 문자열을 공백으로 구분해 리스트화
rotate_number = int(splited_list.pop(0)) #리스트의 첫 요소를 회전 수로 정하고 리스트에서 제거
rotated_list = splited_list[-rotate_number:] + splited_list[0:-rotate_number]
print(" ".join(rotated_list))

2022/11/09 17:33

Frye 'de Bacon

input_value = input()
result = input_value.split(" ")
spin = int(result[0])
del result[0]

if spin > 0 :
    list1 = result[-spin:]
    del result[-spin:]
    print(" ".join(list1 + result))
else :
    list1 = result[-spin:]
    del result[-spin:]
    print(" ".join(list1 + result))

파이썬입니다.

2022/11/10 22:10

ㅇㅇ

L1=input().split()
n=int(L1[0]); L2=L1[1:]; L3=[]

if n>=0:
    L2.reverse()
    for i in range(n):
        L3.append(L2[n-1-i])
    L2.reverse()
    for i in range(len(L2)-n):
        L3.append(L2[i])
else:
    n*=-1
    for i in range(len(L2)-n-1):
        L3.append(L2[n+i])
    for i in range(n):
        L3.append(L2[i])

for i in range(len(L3)):
    print(L3[i], end=' ')

2023/01/27 01:13

김민주

짱이네요

a = input("input numbers: ")
b = a.split(' ')
print(b)

rot_n = int(b.pop(0))
print(rot_n)
print(b)
length = len(b)

print(length)
result = ['0'] * length
print(result)

rot_n = rot_n % length
for idx, i in enumerate(b):
    if idx + rot_n < length :
        result[idx + rot_n] = b[idx]
    else:
        result[idx + rot_n - length] = b[idx]
print(result)

2023/02/18 19:55

제작자

array1=input().split()
numb1=int(array1.pop(0))
currentArray=''
if numb1<0:
    for i in range(abs(numb1)):
        array1.append(array1.pop(0))
elif numb1>0:
    for i in range (numb1):
        array1.insert(0,array1.pop(-1))

print(array1)

2023/03/13 14:00

Sol Song

lst = list(input.split())
first = int(lst.pop(0))

for i in range(0, abs(first)):
    if first >= 0:
        lst.insert(0, lst.pop(-1))

    else:
        lst.append(lst.pop(0))

print(lst)

2023/03/26 13:58

관산정

input_val = input("입력 : ")

val_list = input_val.split(' ')
max_len = len(val_list) - 1
arrow = int(val_list.pop(0))

if arrow > 0:       #정방향
    for i in range(arrow):
        val_list.insert(0, val_list.pop())

elif arrow < 0:
    arrow *= -1
    for i in range(arrow):
        val_list.insert(max_len-1, val_list.pop(0))

print(val_list)

2023/04/03 17:20

HoHyeon Kim

def rotateListByCount(count, targetList):
    itemCount = len(targetList)
    return (targetList[-int(count) % itemCount:] + targetList[:-int(count) % itemCount])

def rotate():    
    testList = list(input('Input: ').split())
    count = testList[0]
    print(rotateListByCount(int(count), testList[1:]))

print(rotateListByCount(-4, ['a','b','c']))
print(rotateListByCount(-3, ['a','b','c']))
print(rotateListByCount(-2, ['a','b','c']))
print(rotateListByCount(-1, ['a','b','c']))
print(rotateListByCount(0, ['a','b','c']))
print(rotateListByCount(1, ['a','b','c']))
print(rotateListByCount(2, ['a','b','c']))
print(rotateListByCount(3, ['a','b','c']))
print(rotateListByCount(4, ['a','b','c']))

2023/04/19 22:34

졸린하마

def rotate():
    usr = input('입력: ').split()

    n = int(usr.pop(0))

    if n > 0:
        for i in range(n):
            x = usr.pop()
            usr.insert(0, x)
    elif n < 0:
        for i in range(-n):
            x = usr.pop(0)
            usr.append(x)

    print(usr)

rotate()

2023/04/21 16:29

장지훈

inpt = input().split()
a = int(inpt.pop(0))
for _ in range(abs(a)):
    if a > 0:
        inpt.insert(0, inpt.pop())
    elif a < 0:
        inpt.append(inpt.pop(0))

for i in inpt:
    print(i, end=' ')

2023/08/04 22:44

Hawk Lee

data = input(">").split()
result = []
num = int(data[0])
del data[0]

def rotate(li,n)
   leng = len(li)
   n = n % leng
   if n == 0:
      return li
   else:
      return li[-n:] + li[:-n]
result = rotate(data,num)
print(result)

2023/09/07 15:01

siu yoon

A = input().split(' ')

B = A[1:]
B_len = len(B)
C = []
rotation = (int(A[0]) % B_len + B_len) % B_len

for i in range(rotation):
    C.append(B[B_len - rotation + i])

for i in range(B_len - rotation):
    C.append(B[i])

print(C)

2023/12/04 15:09

윤영식

inp = input('>>>').split()
rn = int(inp.pop(0))
l = len(inp)
print([ inp[(l+i-rn)%l] for i in range(l)])

2024/02/15 13:18

insperChoi

list_data=input().split()
print(list_data)

rotate=int(list_data.pop(0))
print('rotate:',rotate)
print(list_data)

if rotate>0:
    while rotate>0:
        list_data.insert(0,list_data.pop())
        rotate-=1
elif rotate<0:
    rotate=-rotate
    while rotate>0:
        list_data.insert(len(list_data),list_data.pop(0))
        rotate-=1
else:
    pass

print(list_data)

2024/06/18 12:09

박성우

JAVA입니다.

package 리스트_회전;

import java.util.ArrayList;
import java.util.List;

public class RotateList {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String input = "1 10 20 30 40 50";
        String[] strs = input.split(" ");
        int num = Integer.parseInt(strs[0]);
        List<String> list = new ArrayList<String>();
        for (int i = 1; i < strs.length; i++) {
            list.add(strs[i]);
        }

        list = rotate(list, num);

        for (String string : list) {
            System.out.print(string + " ");
        }
    }

    public static List<String> rotate(List<String> list, int num) {
        if(num == 0) {
            return list;
        }
        boolean sign = num > 0; //양수: true, 음수: false
        String temp = list.get((sign) ? (list.size() - 1) : 0);
        list.remove(temp);
        list.add((sign) ? 0 : (list.size()), temp);
        num = num + ((sign) ? -1 : 1); //양수면 1 감소, 음수면 1 증가
        return rotate(list, num);
    }
}

2025/01/21 21:20

박준우

목록으로