풀이
달팽이 모양으로 N**2 부터 1 까지 수를 표에 맞게 출력하는 문제이다.
이번에도 역시 문제를 꼼꼼히 읽지 못해서 의도치않게 짝수용 풀이까지 만들어버렸다.
하지만 문제에서는 홀수용만 요구하였으니 홀수용 위주로 풀이를 설명하겠다.
홀수형 표는 항상 0, 0 지점에서 N**2 의 숫자가 시작하기 때문에 첫 좌표를 0, 0 으로 지정해준다.
이후 벽을 따라서 숫자가 삽입되기 때문에 dx, dy 를 [하, 우, 상, 좌] 순으로 만들어준다.
숫자가 삽입될 경우마다 패턴이 있는데 N 이 5 인 경우를 예로 들어보겠다.
[하, 우, 상, 좌] 순으로 숫자가 삽입될때마다 순서대로 4번씩 숫자를 입력한 뒤 방향을 전환하는 형식이다.
따라서 25 부터 10 까지 4번씩 방향을 바꿔가며 숫자가 입력되고,
이후 N 이 3 일때 좌표는 1, 1 로 바뀌고 똑같은 패턴을 그대로 적용시킨다.
모든 홀수에 대해서 위 반복이 완료되면 마지막으로 중앙에 위치하는 1 을 입력하면된다.
앞서 설명한 반복문은 N**2 부터 순서대로 숫자가 내려가며 표에 입력되기 때문에 위치를 찾고자 하는 자연수의 차례가 올 경우 그 자연수가 입력될 좌표를 저장하여 추후 정답과 함께 출력하면된다.
소스코드
References