트랙
/
JavaScript
JavaScript
/
연습 문제
/
바둑 점수 세기
바둑 점수 세기

바둑 점수 세기

보통

지침

바둑판에서 획득한 점수를 세어 보세요.

바둑(또는 baduk, igo, cờ vây, wéiqí)에서는 내 돌로 빈 교차점을 완전히 둘러싸면 점수를 얻어요. 플레이어가 이렇게 둘러싼 교차점을 그 플레이어의 영역이라고 해요.

각 플레이어의 영역을 계산하세요. 상대방의 영역 안에 갇힌 돌은 이미 바둑판에서 치워진 것으로 가정해도 돼요.

지정된 좌표가 속한 영역을 알아내세요.

빈 교차점 여러 개가 한꺼번에 둘러싸일 수 있으며, 둘러싸는 데에는 가로와 세로로 이웃한 교차점만 포함돼요. 다음 그림에서 중요한 돌은 "O"로, 중요하지 않은 돌은 "I"(무시됨)로 표시되어 있어요. 빈 칸은 빈 교차점을 나타내요.

+----+
|IOOI|
|O  O|
|O OI|
|IOI |
+----+

더 정확히 말하면, 어떤 빈 교차점은 그 이웃이 모두 그 플레이어의 돌이거나 그 플레이어의 영역에 속한 빈 교차점일 때 그 플레이어의 영역에 속해요.

더 자세한 내용은 Wikipedia나 Sensei's Library를 참고하세요.

입력 형식

게임 보드를 나타내는 board 매개변수는 문자열 배열 형식이에요.

['  B  ', ' B B ', 'B W B', ' W W ', '  W  '];

문자열의 각 문자는 하나의 셀을 나타내요. 셀에 들어갈 수 있는 값은 다음과 같아요:

  • 빈 셀에 해당하는 공백 문자
  • B 검은 플레이어가 소유한 셀
  • W 흰 플레이어가 소유한 셀

출력 형식

getTerritory 함수는 두 개의 속성을 가진 객체를 반환해야 해요:

  • owner 영역의 소유자 (NONE, BLACK, WHITE 중 하나)
  • territory 영역에 있는 각 셀을 나타내는 좌표 배열이에요.
{
    owner: 'BLACK',
    territory: [
        [0, 0],
        [0, 1],
        [1, 0],
    ],
}

getTerritories 함수는 세 개의 속성을 가진 객체를 반환해야 해요:

  • territoryBlack BLACK 플레이어가 소유한 영역들을 나타내는 좌표 배열
  • territoryWhite WHITE 플레이어가 소유한 영역들을 나타내는 좌표 배열
  • territoryNone 두 플레이어 중 누구에게도 소유되지 않은 영역들을 나타내는 좌표 배열
{
    territoryBlack: [
        [0, 0],
        [0, 1],
    ],
    territoryWhite: [
        [3, 0],
        [3, 1],
    ],
    territoryNone: [],
}
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
JavaScript Exercism

바둑 점수 세기 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 JavaScript 트랙을 개념 37개연습 문제 159개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.