체스보드위에 킹 한개와 여러개의 퀸이 존재할시 킹을 공격할수 있는 퀸의 좌표들을 돌려주는 문제.
특정위치에 존재하는 킹을 공격할수 있는 퀸의 갯수는 최대 8개이다. 이는 킹의 좌표를 원점으로 하는 계산된 좌표계에서의 퀸의 위치를 각도로 표현할경우 45도의 배수 형태로 나타나게 된다. 해당 각도내에서의 위치중 킹에 가까운 퀸만이 해당 상항이 된다.
이를 바탕으로 풀이 방식을 생각해보면 다음과 같다.
우선 입력 되는 정보는 킹의 좌표와 퀸들의 좌표이다.이를 우선 킹의 좌표가 원점이 되는 좌표계의 좌표로 변경한다.
선택되는 대상의 좌표를 입력할 결과 배열과 해당 좌표가 원점으로 부터 가지는 거리를 입력할 거리 배열을 선언 한다.
이후 주어진 퀸들의 변경된 좌표를 하나씩 꺼내온다.
360 도를 기준으로 45로 의 배수로 잘라내면 0~ 7 까지의 값을 가지게 된다. 이를 선택되는 좌표의 index로 정의하고 선택된 좌표로 구해진 각도가 45도의 배수이면 다음의 과정을 진행한다.
4.1 결과배열에 해당 인덱스의 값이 존재하는지를 확인한다.
4.2 없다면 해당 인덱스에 현재 좌표를 입력하고 거리배열에 원점에대한 현재좌표의 거리값을 입력한다.
4.3 존재한다면 입력된 거리 배열의 값과 현재 좌표의 거리값을 비요하여 현재 좌표의 거리값이 작을경우 결과 배열의 좌표와 거리 값을 변경한다.
주어진 모든 퀸의 좌표에 대해 위과정을 진행하면 킹에 공격할수 있는 퀸의 좌표들이 결과 배열에 입력된다. 하지만 일부 인덱스의 값은 존재하지 않을수도 있으므로 출력하기전에 값이 입력된 배열의 값만 결과로 출력한다.
회복중