패치워크
면접 대비시간 제한1초메모리 제한1024 MB
직사각형 퀼트 격자 위에 패치를 주어진 순서와 위치대로 덧대고, 가장자리 밖으로 나간 부분을 잘라낸 뒤 최종 모양을 출력합니다.
문제
아담의 할머니 생신이 다가와서, 아담은 할머니께 드릴 선물로 아름다운 패치워크 퀼트를 만들고 싶어 합니다. 아담에게는 퀼트에 달 패치 디자인이 여러 개 있지만, 각 패치를 어디에 놓을지 정하기 어려워합니다. 지금 그는 주어진 배치대로 패치를 모두 달아 본 뒤, 마음에 들지 않으면 전부 잘라 냅니다. 이 방식은 매우 비효율적이라서 아담은 시간이 부족해지고 있습니다.
아담은 직사각형 흰 천을 퀼트의 바탕으로 사용합니다. 패치 종류마다 개수는 무한히 있습니다. 각 패치 종류는 정해진 디자인이 그려진 직사각형 천 조각입니다. 아담은 패치를 주어진 순서와 위치에 달았을 때 천이 어떤 모습이 되는지 알고 싶어 합니다. 퀼트 바탕의 가장자리 밖으로 나오는 천은 잘라 내므로, 프로그램도 같은 방식으로 처리해야 합니다.
아담을 도와 완성된 퀼트를 출력하는 프로그램을 작성하세요.
입력
첫 줄에는 퀼트의 크기를 나타내는 정수 ()가 주어집니다. 처음에 퀼트는 흰색이며, 행 열의 격자로 표현되고 각 칸은 흰색을 뜻하는 . (마침표) 문자입니다.
둘째 줄에는 패치 종류의 수 ()이 주어집니다. 각 패치 종류는 다음과 같이 주어집니다.
- 번째 패치 종류의 첫 줄에는 행 수 와 열 수 ()가 주어집니다.
- 이어서 줄이 주어지며, 각 줄에는 개의 공백이 아닌 ASCII 문자가 들어 있고, 이것이 번째 패치의 디자인입니다.
다음 줄에는 아담이 퀼트에 달고 싶은 패치의 수 ()이 주어집니다. 이어지는 줄의 번째 줄에는 세 정수 (), (), ()가 주어집니다. 이는 번째 패치를 왼쪽 위 모서리가 퀼트의 행 열 위치에 오도록 붙인다는 뜻입니다. 패치는 입력에 주어진 순서대로 붙입니다.
출력
모든 패치를 붙이고 가장자리 밖으로 나온 천을 잘라 낸 뒤의 완성된 퀼트를 출력하세요. 행 열의 ASCII 문자로 출력하며, 각 위치에는 퀼트의 모습이 표시됩니다.