DUP
시간 제한2초메모리 제한512 MB
여러 픽셀 행렬을 읽고 [+] 표시가 왼쪽 아래에 오도록 회전시켜 정규화한 뒤, 내용이 같은 이미지의 파일 이름을 출력한다.
문제
한 소프트웨어 회사가 중복된 이미지 파일을 찾는 유틸리티 프로그램을 만들기 시작했다. 물론 파일 이름, 확장자, 생성 및 수정 시각을 비교하는 간단한 방법도 있지만, 결과가 정확하지 않다. 두 이미지가 중복인지 확인하려면 내용을 픽셀 단위로 비교해야 한다.
우선 이 회사는 크기가 같고 90도, 180도, 270도 회전이 가능한 이미지를 비교하는 기능을 추가하려고 한다. 이미지 파일 이름과 픽셀 행렬로 주어지는 이미지 내용을 입력으로 받아, 중복인 이미지 이름을 출력하는 프로그램을 작성하시오.
입력
첫 줄에 I W H가 주어진다.
- I는 입력 이미지의 수이며, I < 1000이다.
- W는 이미지의 너비이며, 0 < W < 100이다.
- H는 이미지의 높이이며, 0 < H < 100이다.
이어서 각 이미지는 다음과 같이 주어진다.
-
FN은 파일 이름이 들어 있는 줄이며, len(FN) < 100이다.
-
그다음에 W 또는 H개의 줄이 오고, 각 줄에는 W 또는 H개의 문자가 들어 있다.
- 각 픽셀은 문자 하나(0-9, A-Z, a-z, +)로 표현된다.
- 원본 이미지의 왼쪽 아래 픽셀에는 더하기 [+] 기호가 표시되어 있다.
이미지들은 5개의 대시(-)로 이루어진 줄로 구분된다.
출력
중복인 이미지의 이름을 사전순 오름차순으로 정렬하여 한 줄에 하나씩 출력한다.
힌트
입력에는 크기가 4x3 또는 3x4인 이미지 3개가 있다. 아래 표에서 각 이미지를 0도로 되돌린 뒤 비교한다.
| 비고 | 원래 + 기호는 왼쪽 아래에 있어야 하지만, 180도 회전되어 오른쪽 위에 있다. | 이미지는 90도(또는 -270도) 회전되어 있다. | 이미지는 270도(또는 -90도) 회전되어 있다. |
| 회전 후 | ```
5543
4432
+543
``` | ```
5543
4432
+543
``` | ```
0015
1154
+234
``` |
따라서 [untitled.png, trip2019.png]는 같은 내용(픽셀)을 가지므로 중복이다.