소용돌이 예쁘게 출력하기

https://www.acmicpc.net/problem/1022


풀이


문제 해결을 위한 아이디어는 입력된 좌표들 중 가장 작은 값과 가장 큰 값을 찾고
위 그림처럼 그 좌표에 해당하는 소용돌이 형태의 수열들만 구한 뒤 범위에 해당하는 부분만 출력하도록 하는 것이다.

입력값이 음수도 올 수 있기 때문에 절댓값을 이용해 최소, 최대 좌표를 구한다.
절댓값을 이용해도 상관없는 소용돌이 형태의 수열들만 구할 것이기 때문이다.
이 과정은 함수 maxmin으로 구현한다.

최소, 최대 좌표값을 구했다면 이제 그 범위의 소용돌이 수열들을 구하고 출력 범위에 있는 것들을 배열에 저장한다.
주의점으로 입력값의 범위에 0이 포함되어 있다면 a[-r1][-c1]요소를 1로 설정해 준다.
왜냐하면 maxmin 함수는 절댓값을 이용해서 최솟값과 최댓값을 구하기 때문에 0을 고려하지 못하는 경우가 생기기 때문이다.

마지막으로 최종 배열을 출력하는데 가장 큰 수에 맞춰 공백으로 정렬하여 출력하는 것에 유의한다.