봉술가
문제
한 명의 봉술가는 N×N 크기의 보드 판에서 다수의 그래플러와 싸워야 한다. 보드 판에서 빈 공간은 "B", 그래플러의 위치는 "G"로 표시되며, 한 위치에 여러 명이 존재할 수 없다. 그래플러는 최소 2명 이상 주어지며, 초기 그래플러들은 서로 다른 칸에 위치해 있다. 그래플러가 존재하지 않는 빈 칸(빈 공간)은 1개 이상 주어진다.
봉술가가 빈 칸 중에서 자신의 시작 위치를 선택하고 나면, 이어서 그래플러들의 이동이 시작된다. 각 그래플러는 매 초마다 현재 위치에서 상, 하, 좌, 우로 이동할 수 있으며, 그래플러들의 이동 과정에서 한 위치에 여러 명이 존재할 수 없다. 봉술가는 싸움이 시작되기 전에 최대한 그래플러들부터 멀리 떨어지고 싶다.
결과적으로 봉술가가 시작 위치를 결정하기 위해, 빈 칸 중에서 가장 가까운 그래플러와의 거리가 최대가 되는 빈 칸을 계산하는 프로그램을 작성하여라. 가장 가까운 그래플러와의 거리가 최대가 되는 빈 칸이 여러 곳이라면, 가장 낮은(작은) 번호의 행을 갖는 위치를 반환한다. 만약 가장 낮은 번호의 행을 갖는 위치가 여러 개라면, 가장 낮은 번호의 열을 갖는 위치를 반환한다.
예를 들어 N=5인 예시를 확인해 보자. 각 위치를 [행, 열]의 형태로 나타내고, 행과 열의 인덱스가 0부터 시작한다고 하면, 아래 예시에서 3명의 그래플러가 존재하는 위치는 차례대로 [1, 1], [2, 3], [4, 2]이다.
| B | B | B | B | B |
|---|---|---|---|---|
| B | G | B | B | B |
| B | B | B | G | B |
| B | B | B | B | B |
| B | B | G | B | B |
이 경우, 가장 가까운 그래플러와의 거리가 최대가 되는 지점들을 음영으로 표시하면 다음과 같다. 결과적으로 본 예시에서 가장 가까운 그래플러와의 거리의 최댓값은 3인 것을 알 수 있다.
| B | B | B | B | B |
|---|---|---|---|---|
| B | G | B | B | B |
| B | B | B | G | B |
| B | B | B | B | B |
| B | B | G | B | B |
따라서, 현재 예시에서는 본 문제에서 요구하는 [가장 낮은 행, 가장 낮은 열]의 위치는 [0, 4]이다.
입출력 예시
예시 1
입력
5, [["B", "B", "B", "B", "B"], ["B", "G", "B", "B", "B"], ["B", "B", "B", "G", "B"], ["B", "B", "B", "B", "B"], ["B", "B", "G", "B", "B"]]
출력
[0, 4]
예시 2
입력
5, [["B", "B", "B", "B", "B"], ["B", "B", "B", "B", "B"], ["B", "B", "B", "B", "G"], ["B", "B", "B", "G", "B"], ["B", "B", "G", "B", "B"]]
출력
[0, 0]
입력 조건
가장 먼저 보드 판의 크기 N이 주어진다. N은 5 이상 500 이하의 자연수다.
이어서 행과 열의 길이가 각각 N인 2차원 배열 형태의 보드 판 정보 배열 board가 주어진다. 빈 공간은 "B", 그래플러의 위치는 "G"로 표시된다. 한 위치에 여러 명이 존재하지 않는다. 그래플러는 최소 2명 이상 주어지며, 빈 칸은 1개 이상 주어진다.
출력 조건
빈 칸 중에서 가장 가까운 그래플러와의 거리가 최대가 되는 빈 칸의 위치를 1차원 배열 [가장 낮은 행, 가장 낮은 열] 형태로 반환하여라. 가장 가까운 그래플러와의 거리가 최대가 되는 빈 칸이 여러 곳이라면, 가장 낮은 번호의 행을 갖는 위치를 반환한다. 만약 가장 낮은 번호의 행을 갖는 위치가 여러 개라면, 가장 낮은 번호의 열을 갖는 위치를 반환한다.
요구사항
- solution(N, board) 함수를 만들고 답을 반환해야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
- 케이스는 15개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 15개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 15개를 전부 통과해야 해결입니다.
5, [["B", "B", "B", "B", "B"], ["B", "G", "B", "B", "B"], ["B", "B", "B", "G", "B"], ["B", "B", "B", "B", "B"], ["B", "B", "G", "B", "B"]]
[0, 4]
5, [["B", "B", "B", "B", "B"], ["B", "B", "B", "B", "B"], ["B", "B", "B", "B", "G"], ["B", "B", "B", "G", "B"], ["B", "B", "G", "B", "B"]]
[0, 0]
68, [["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "G", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B" ... 여기까지만 보여 드립니다 (전체 23,260자)
[0, 9]
참고 사항
풀이에 도움이 되는 배경입니다. 지켜야 하는 규격은 위의 입출력 조건과 요구사항에 있습니다.
원본에서 모의고사 6회 2번입니다.
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.