바둑판에서 획득한 점수를 세어 보세요.
바둑(또는 baduk, igo, cờ vây, wéiqí)에서는 내 돌로 빈 교차점을 완전히 둘러싸면 점수를 얻어요. 플레이어가 이렇게 둘러싼 교차점을 그 플레이어의 영역이라고 해요.
각 플레이어의 영역을 계산하세요. 상대방의 영역 안에 갇힌 돌은 이미 바둑판에서 치워진 것으로 가정해도 돼요.
지정된 좌표가 속한 영역을 알아내세요.
빈 교차점 여러 개가 한꺼번에 둘러싸일 수 있으며, 둘러싸는 데에는 가로와 세로로 이웃한 교차점만 포함돼요. 다음 그림에서 중요한 돌은 "O"로, 중요하지 않은 돌은 "I"(무시됨)로 표시되어 있어요. 빈 칸은 빈 교차점을 나타내요.
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
더 정확히 말하면, 어떤 빈 교차점은 그 이웃이 모두 그 플레이어의 돌이거나 그 플레이어의 영역에 속한 빈 교차점일 때 그 플레이어의 영역에 속해요.
더 자세한 내용은 Wikipedia나 Sensei's Library를 참고하세요.
때로는 예외를 발생시키는 것이 필요할 때가 있어요. 이럴 때는 오류의 원인이 무엇인지 알려 주는 의미 있는 오류 메시지를 항상 포함해야 해요. 그래야 코드를 더 읽기 쉽게 만들고 디버깅에도 큰 도움이 돼요. 오류의 원인이 특정 유형이라고 확실한 상황이라면 내장 오류 유형 중 하나를 발생시켜도 되지만, 그래도 의미 있는 메시지는 포함해야 해요.
이 연습 문제에서는 잘못된 좌표가 주어졌을 때 raise문을 사용해 ValueError를 "던져야" 해요. exception을 raise하면서 그에 대한 메시지도 함께 넣어야만 테스트를 통과할 수 있어요.
메시지와 함께 ValueError를 발생시키려면, exception 유형에 인자로 메시지를 전달해요:
# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
Exercism에 가입하고 Python 트랙을 개념 17개연습 문제 146개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.