집 근처 숲에 나무 위 집을 지어 해가 뜨고 지는 모습을 보려고 해요.
지역 측량 회사에서 지도의 각 직사각형 구역에 있는 모든 나무의 높이를 알려 주는 데이터를 받았어요.
나무 위 집을 지을 좋은 나무를 찾으려면 지도의 각 격자를 분석해야 해요.
좋은 나무는 다음 두 가지 조건을 모두 만족해요:
이번 과제는 나무 위 집을 지을 수 있는 후보 나무를 찾는 거예요.
데이터 회사는 나무의 높이를 나타내는 격자 형태로 데이터를 제공해요. 격자의 행은 동서 방향을, 열은 남북 방향을 나타내요.
가능한 나무는 자기 행에서는 가장 크고, 자기 열에서는 가장 작은 나무예요.
어떤 격자에는 이런 나무가 하나도 없을 수도 있어요. 하나만 있을 수도 있고, 여러 개일 수도 있어요.
다음은 후보 나무가 딱 하나뿐인 격자예요.
↓
1 2 3 4
|-----------
1 | 9 8 7 8
→ 2 |[5] 3 2 4
3 | 6 6 7 1
따라서 [2, 1] 지점(행: 2, 열: 1)은 나무 위 집을 짓기에 아주 좋은 자리예요.
때로는 예외를 발생시켜야 할 때가 있어요. 이렇게 할 때는 오류의 원인이 무엇인지 알려 주는 의미 있는 오류 메시지를 항상 포함해야 해요. 그러면 코드가 더 읽기 쉬워지고 디버깅에 큰 도움이 돼요. 오류 원인이 특정 타입이라는 것을 아는 상황이라면 내장 오류 타입 중 하나를 발생시켜도 되지만, 그때도 의미 있는 메시지를 포함해야 해요.
이 연습 문제에서는 matrix가 불규칙할 때 ValueError를 "던지기" 위해 raise 문을 사용해야 해요. 테스트를 통과하려면 raise로 exception을 발생시키고 메시지도 함께 포함해야 해요.
메시지와 함께 ValueError를 발생시키려면, 메시지를 exception 타입의 인자로 써 주세요:
# if the matrix is irregular
raise ValueError("irregular matrix")
Exercism에 가입하고 Python 트랙을 개념 17개연습 문제 146개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.