바둑판에서 획득한 점수를 세어 보세요.
바둑(또는 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: [],
}
Exercism에 가입하고 JavaScript 트랙을 개념 37개연습 문제 159개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.