DUP

시간 제한2초메모리 제한512 MB

요약
여러 픽셀 행렬을 읽고 [+] 표시가 왼쪽 아래에 오도록 회전시켜 정규화한 뒤, 내용이 같은 이미지의 파일 이름을 출력한다.
난이도

보통10점 중 5점

유형
행렬, 해시맵, 구현, 정렬
정답자
아직 제출이 없습니다

문제

한 소프트웨어 회사가 중복된 이미지 파일을 찾는 유틸리티 프로그램을 만들기 시작했다. 물론 파일 이름, 확장자, 생성 및 수정 시각을 비교하는 간단한 방법도 있지만, 결과가 정확하지 않다. 두 이미지가 중복인지 확인하려면 내용을 픽셀 단위로 비교해야 한다.

우선 이 회사는 크기가 같고 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도로 되돌린 뒤 비교한다.

파일 이름untitled.pngtrip2019.pnggame.png
입력```
345+
2344
3455
``````
323
434
545
54+
``````
+10
210
351
445
| 비고           | 원래 + 기호는 왼쪽 아래에 있어야 하지만, 180도 회전되어 오른쪽 위에 있다. | 이미지는 90도(또는 -270도) 회전되어 있다. | 이미지는 270도(또는 -90도) 회전되어 있다. |
| 회전 후        | ```
5543
4432
+543
```                                                                                           | ```
5543
4432
+543
```                       | ```
0015
1154
+234
```                     |

따라서 [untitled.png, trip2019.png]는 같은 내용(픽셀)을 가지므로 중복이다.

예제1

  1. 예제 1

    입력
    3 4 3
    untitled.png
    345+
    2344
    3455
    -----
    trip2019.png
    323
    434
    545
    54+
    -----
    game.png
    +10
    210
    351
    445
    
    예상 출력
    trip2019.png
    untitled.png