백준-2641

0
post-thumbnail

  • 같은 방향이라면 각 숫자들의 개수가 같다. 다만 순서가 다를뿐이다.
  • 즉, 표본 모양수열의 수의 순서를 옮김으로서 해당 수열을 만들 수 있다.
  • 반대반향의 것을 구할 때는 표본 모양수열을 reverse 해주고 각 숫자의 방향의 반대방향의 숫자로 바꿔준 다음에 2번째 방법 그대로 해결을 하면된다.
from collections import deque

l=int(input())
seq=list(map(int, input().split()))
n=int(input())
same=[]
for _ in range(n):
    same.append(deque(map(int, input().split())))

def solution(lis):
    global ans_list
    global cnt
    
    temp=lis.copy()
    for _ in range(l):
        temp.append(temp.popleft())
        if list(temp)==seq:
            ans_list[i]=lis
            cnt+=1
            return
        
ans_list=[0]*n
cnt=0
for i in range(n):
    solution(same[i])

seq.reverse()     
for i in range(l):
    if seq[i]==1: seq[i]=3
    elif seq[i]==2: seq[i]=4
    elif seq[i]==3: seq[i]=1
    elif seq[i]==4: seq[i]=2

for i in range(n):
    solution(same[i])

print(cnt)
for i in ans_list:
    if i==0: continue
    print(*i)

0개의 댓글