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

바둑 점수 세기

보통

지침

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

바둑(또는 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')
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Python Exercism

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

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