ASCII 아트
면접 대비시간 제한1초메모리 제한512 MB
최대 5000개의 정수 점이 주어질 때, 이들을 'x'로 표시하고 빈 축은 '-'와 '|', 원점은 'o'로 채우며 가장 작은 '#' 직사각형 프레임 안에 그리는 문제입니다.
문제
Malnar 씨는 예술과 자그레브의 도시 문화를 열렬히 사랑하는 사람이라, 그가 해마다 Art Park 행사에 빠지지 않고 참석하는 것도 놀라운 일이 아니다. 올해 이 행사는 Ribnjak 공원에서 열렸다. 흥미롭게도 그는 바로 그곳에서 이 문제에 대한 영감을 얻었다. "카우보이, 권총, 페미니즘" 전시회의 걸작들을 둘러보던 중, 그는 한 젊은 여성을 만났다.
Malnar 씨: 현대 예술가들이 ASCII 아트 기법을 거의 사용하지 않는다는 걸 알고 있나요?
여성: 솔직히 그 기법을 잘 모르겠어요. 정확히 어떤 건가요?
Malnar 씨: 예술가들이 ASCII 표준에 정의된 128개 문자를 사용해 매우 복잡한 그림을 표현하는 기법이에요. 원한다면 제 작품 몇 개를 보여드릴게요, 그리고 그 김에 홉 주스도 한잔 대접할 수 있어요.
여성: 흥미롭네요, 좋아요!
평면 위에 n개의 정수 좌표 점이 주어질 때, 여러분의 임무는 ASCII 아트 기법을 사용해 이 점들을 좌표계에 그리는 것이다.
그림에서 각 점은 문자 'x'(ASCII 120)로 나타내야 한다. 만약 점들 중에 좌표계의 원점이 없다면, 원점은 문자 'o'(ASCII 111)로 나타내야 한다. 또한, 점들이 없는 좌표축 부분은 특수 문자로 나타내야 한다. 더 정확히는, 점들이 없는 x축 부분은 문자 '-'(ASCII 45)로, 점들이 없는 y축 부분은 문자 '|'(ASCII 124)로 나타내야 한다. 점, 원점, 좌표축이 모두 없는 나머지 평면 부분은 공백 문자 ' '(ASCII 32)로 나타내야 한다.
추가로, 전체 그림을 가능한 한 가장 작은 넓이의 직사각형 틀에 넣어야 하며, 그 틀의 테두리는 문자 '#'(ASCII 35)로 표시해야 한다. 물론, 틀 안에는 모든 점과 원점이 들어가야 한다.
이 조건들은 그림의 모양을 유일하게 결정한다.
입력
첫 번째 줄에는 문제 본문의 자연수 n(1 ≤ n ≤ 5 000)이 주어진다.
다음 n개의 줄 중 i번째 줄에는 i번째 점의 좌표를 나타내는 두 정수 xi와 yi(−500 ≤ xi, yi ≤ 500)가 주어진다. 각 점은 입력에 최대 한 번만 나타난다.
출력
문제 본문에서 설명한 대로, 점들이 표시된 좌표계의 ASCII 아트 그림을 출력한다.