문제
[컨베이어 벨트]
풀러 가기
시계 방향으로 한 칸씩 회전하는 컨베이어 벨트가 있습니다.
컨베이어 벨트 위아래로 n개씩 총 2 * n 개의 숫자가 두 줄로 적혀 있고, 1초에 한 칸씩 움직입니다.
위의 그림에서 1초가 흐른 뒤에는 다음과 같이 그림이 바뀌게 됩니다.
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=" ")
결과
쨔쨘