| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 802 | 371 | 331 | 46.424% |
세로 길이가 $N,ドル 가로 길이가 $M$인 평면에 세로 길이가 $U,ドル 가로 길이가 $V$인 텍스처를 씌우려고 한다. 평면의 제일 왼쪽 위 칸에 텍스처의 왼쪽 위 칸이 만나게 해서 씌우려고 한다. 하지만 평면의 가로 또는 세로의 길이가 텍스처의 가로 또는 세로의 길이보다 길 수 있어 세 가지 방법 중 하나를 사용해서 평면을 다 씌울 수 있도록 하려고 한다.
세 가지의 방법은 다음과 같다.
1. clamp-to-edge
텍스처의 모서리를 늘려 빈 공간을 채우는 방식이다. 평면의 어떤 칸의 행 좌표가 텍스처의 세로 길이 이상이면 텍스처의 맨 아래 행에서 평면 칸과 동일한 열 좌표에 있는 칸을 해당 평면 칸에 씌운다. 열 좌표가 텍스처의 가로 길이 이상이면 텍스처의 맨 오른쪽 열에서 평면 칸과 동일한 행 좌표에 있는 칸을 해당 평면 칸에 씌운다. 행 좌표와 열 좌표가 각각 텍스처의 세로 길이, 가로 길이 이상이면 텍스처의 맨 아래 오른쪽 칸을 해당 평면 칸에 씌운다.
2. repeat
텍스처를 반복적으로 붙이면서 씌우는 방식이다. 평면을 아래 그림과 같이 세로 길이가 $U,ドル 가로 길이가 $V$인 조각으로 쪼갠 후 각 조각의 맨 왼쪽 위 칸이 텍스처의 맨 왼쪽 위 칸이 오도록 텍스처를 씌운다.
3. mirrored-repeat
텍스처를 텍스처 경계면에 대해 거울 반전 시키면서 붙여나가며 씌우는 방식이다. 평면을 아래 그림과 같이 세로 길이가 $U,ドル 가로 길이가 $V$인 조각으로 쪼갠 후 각 조각에서 왼쪽 조각을 씌울 때의 텍스처를 좌우반전, 아래쪽 조각을 씌울 때의 텍스처를 상하반전해서 해당 조각의 칸들을 씌운다.
평면의 크기와 텍스처, 그리고 사용할 방법이 주어질 때 평면의 최종 모습을 출력하자.
첫 번째 줄에 평면의 크기 $N$과 $M$이 공백으로 구분되어 주어진다. $(1 \leq N \leq 200; 1 \leq M \leq 200)$
두 번째 줄에 텍스처의 크기 $U$와 $V$가 공백으로 구분되어 주어진다. $(1 \leq U \leq 200; 1 \leq V \leq 200)$
세 번째 줄부터 $U$개의 줄에 걸쳐 텍스처의 정보가 주어진다. 텍스쳐의 각 줄은 알파벳 대소문자 또는 숫자로 구성된 길이가 $V$인 문자열이다
$U+3$번째 줄에 텍스처를 씌울 방법이 주어진다. clamp-to-edge, repeat, mirrored-repeat 중 하나로 주어진다.
텍스처를 씌운 평면의 최종 모습을 출력한다.
7 7 3 3 123 456 789 clamp-to-edge
1233333 4566666 7899999 7899999 7899999 7899999 7899999
7 7 3 3 123 456 789 repeat
1231231 4564564 7897897 1231231 4564564 7897897 1231231
7 7 3 3 123 456 789 mirrored-repeat
1233211 4566544 7899877 7899877 4566544 1233211 1233211
Contest > BOJ User Contest > 유틸컵 > 제2회 유틸컵 🏁✂️번