집 근처 숲에 나무 위의 집을 지으려고 해요. 그 집에 올라가서 해가 뜨고 지는 모습을 보고 싶거든요.
지역 측량 회사에서 받은 데이터에는 지도를 직사각형으로 나눈 각 구역에 있는 모든 나무의 높이가 담겨 있어요. 나무 위의 집을 지을 완벽한 나무를 찾으려면 지도의 각 격자를 분석해야 해요.
가장 좋은 나무는 동쪽과 서쪽에 있는 다른 모든 나무보다 키가 큰 나무예요. 그래야 일출과 일몰을 최대한 잘 볼 수 있어요. 또 너무 많이 오르는 건 싫으니까, 완벽한 나무는 북쪽과 남쪽에 있는 모든 나무 중에서 가장 작은 나무이기도 해요.
이번 과제는 나무 위에 집을 지을 만한 후보 나무를 찾는 거예요.
데이터 회사는 나무의 높이를 나타내는 격자 형태로 데이터를 제공해요. 격자의 행은 동서 방향을, 열은 남북 방향을 나타내요.
조건에 맞는 나무는 자기 행에서 가장 크면서 자기 열에서 가장 작은 나무예요.
어떤 격자에는 조건에 맞는 나무가 하나도 없을 수도 있어요. 하나만 있을 수도 있고, 여러 개 있을 수도 있어요.
다음은 후보 나무가 딱 하나뿐인 격자예요.
1 2 3 4
|----------- 1 | 9 8 7 8 2 | 5 3 2 4 <--- potential tree house at row 2, column 1, for tree with height 5 3 | 6 6 7 1
그래서 [2, 1] 지점(행: 2, 열: 1)은 나무 위 집을 짓기에 좋은 자리예요.
Exercism에 가입하고 Delphi Pascal 트랙을 연습 문제 76개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.