• Home
  • About
    • Yerim Oh photo

      Yerim Oh

      Happy and worthwhile day by day :)

    • Learn More
    • Email
    • LinkedIn
    • Instagram
    • Github
    • Youtube
  • Posts
    • All Posts
    • All Tags
  • Projects

[1011] (파이썬) CODE TREE_Lv.2 Intermediate Low: 컨베이어 벨트

20 Jan 2020

Reading time ~2 minutes

Table of Contents
  • 문제
    • 입력 형식
    • 출력 형식
    • 입출력 예제
  • 풀이과정
    • 1) 변수 선언
    • 2) t초 마다 진행되는 벨트 움직임 구현
    • 3) 출력
  • 구현
  • 결과

문제

[컨베이어 벨트]
풀러 가기

시계 방향으로 한 칸씩 회전하는 컨베이어 벨트가 있습니다.
컨베이어 벨트 위아래로 n개씩 총 2 * n 개의 숫자가 두 줄로 적혀 있고, 1초에 한 칸씩 움직입니다.

image

위의 그림에서 1초가 흐른 뒤에는 다음과 같이 그림이 바뀌게 됩니다. image

t초의 시간이 흐른 뒤 컨베이어 벨트에 놓여있는 숫자들의 상태를 출력하는 프로그램을 작성해보세요.

입력 형식

첫 번째 줄에는 n과 t가 공백을 사이에 두고 주어집니다.

두 번째 줄에는 위 변에 있는 초기 n개의 숫자들이 공백을 사이에 두고 주어집니다.

세 번째 줄에는 아래 변에 있는 초기 n개의 숫자들이 공백을 사이에 두고 주어집니다.

숫자는 각 변마다 숫자가 올바르게 보이는 방향에서 바라봤을 때 왼쪽에서 오른쪽 순으로 주어집니다.

  • 1 ≤ n ≤ 200
  • 1 ≤ t ≤ 1,000
  • 1 ≤ 주어지는 숫자 ≤ 9

출력 형식

t초 후 컨베이어 벨트에 놓여있는 숫자들의 상태를 출력합니다.

첫 번째 줄에는 위 위 변에 있는 n개의 숫자들을 공백을 사이에 두고 출력합니다.

두 번째 줄에는 아래 변에 있는 n개의 숫자들을 공백을 사이에 두고 출력합니다.

숫자는 각 변마다 입력으로 주어지는 순서대로 출력합니다.

Constraints:
시간 제한: 1000ms
메모리 제한: 80MB

입출력 예제

입력:
3 1
1 2 3
6 5 1

출력: 
1 1 2
3 6 5
입력:
3 3
1 2 3
6 5 1

출력: 
6 5 1
1 2 3

풀이과정

1) 변수 선언

n, t = tuple(map(int, input().split()))
first = list(map(int, input().split()))
sec = list(map(int, input().split()))

2) t초 마다 진행되는 벨트 움직임 구현

  • 1) 자리를 바꿀 변수들을 다른 변수에 저장해 둔다.
  • f_e: first 라인의 맨 뒤 숫자
f_e = first[n-1]
  • 2) first의 숫자를 완성해 둔다
# 밀기
for i in range(n - 1, 0, -1):
    first[i] = first[i - 1]
# 0번쨰 인덱스 채우기
first[0]= sec[n-1]
  • 3) 아래의 숫자들을 완성한다
# 밀기
for i in range(n - 1, 0, -1):
    sec[i] = sec[i - 1]
# 0번쨰 인덱스 채우기
sec[0]=f_e

3) 출력

for elem in first:
    print(elem, end=" ")
print()

for elem in sec :
    print(elem, end=" ")

구현

n, t = tuple(map(int, input().split()))
first = list(map(int, input().split()))
sec = list(map(int, input().split()))


for _ in range(0,t):
    f_e = first[n-1]

    for i in range(n - 1, 0, -1):
        first[i] = first[i - 1]
    # 3) 0번쨰 인덱스 채우기
    first[0]=sec[n-1]


    # 2) 밀기
    for i in range(n - 1, 0, -1):
        sec[i] = sec[i - 1]
    # 3) 0번쨰 인덱스 채우기
    sec[0]=f_e

    
# 출력
for elem in first:
    print(elem, end=" ")
print()

for elem in sec :
    print(elem, end=" ")


결과

image 쨔쨘



Coding test Share Tweet +1