d라이브러리









[수학자와 함께 마인크래프트] #해적 유저 정복하기 2. 숨쉴 공간 마련! 물 쫙 빨아들이는 스펀지의 최소 개수는?

 

호흡 마법이 부여된 모자를 썼다고 무제한으로 바닷속을 탐험할 수 있는 건 아니에요. 일정 시간 간격으로 바다 위로 올라와서 다시 숨쉰 뒤 탐험해야 하지요. 그래서 유적 가까운 곳에 숨쉴 수 있도록 바닷물이 없는 공간을 만들어야 해요. 물이 더 이상 들어오지 않게 벽으로 둘러 싸고 물을 빼야 하지요.

 

마인크래프트에서 물은 고정된 물과 흐르는 물로 구분되는데, 바다나 강 지역은 보통 고정된 물로만 이뤄져 있어요. 고정된 물을 제거하기 위해선 물을 양동이로 퍼내거나 다른 블록을 설치한 다음 그 블록을 다시 부수면 돼요. 예를 들어 바닷속에서 한 변의 길이가 10인 정육면체 모양의 빈 공간을 만들기 위해서는 양동이로 무려 103 = 1000번 물을 퍼내거나 1000개의 블록으로 채운 후에 다시 이 블록을 제거해야 하지요.

 

 

숨쉬기 위한 공간을 만들기 위해 물을 뺄 때 스펀지 블록을 이용하면 편리해요. 스펀지 블록은 해저 유적을 지키는 엘더 가디언이 죽을 때 떨어뜨리는 아이템이에요. 마른 스펀지 블록은 물 안에 설치하면 아래의 세 가지 규칙에 따라 주변의 물을 흡수해요.

 

 

여기서 맨해튼 거리는 두 점 사이의 거리를 가로, 세로, 높이 길이의 합으로 표현한 새로운 거리 개념이에요. 주로 게임에서 많이 사용하지요. 2차원에서 먼저 살펴볼까요? 일반적으로 우리는 거리를 잴 때 두 점 P와 Q의 직선 거리를 재요. 이를 ‘유클리드 거리’라고 하지요. 하지만 맨해튼 거리는 가로와 세로의 높이를 더해 12 + 5 = 17입니다.

 

 

이 개념을 3차원에 적용하면 한 점으로부터 거리가 같은 점들의 모임인 구도 그 모양이 다르게 나타납니다. 우리가 아는 구는 첫 번째 그림처럼 생겼지만 맨해튼 거리로 정의한 구는 가운데 그림과 같은 모양이에요.

 

 

<;문제 상황>; 공간의 물을 모두 흡수하기 위해 필요한 최소 스펀지의 개수는?

 

해저 유적에는 엘더 가디언이 단 3마리만 존재해요. 따라서 스펀지 블록 역시 최대 3개를 얻을 수 있답니다. 때문에 일정한 공간의 물을 비울 때 흡수하는 물 블록의 위치가 최대한 겹치지 않도록 스펀지 블록을 배치해야 해요. 그렇다면 3 x 3 x 10 크기의 직육면체 공간의 물을 모두 흡수하기 위해서는 최소 몇 개의 스펀지 블록이 필요할까요?

 

<;수학으로 따지기>;

 

맨해튼 거리가 1인 구는 정육면체 모양의 스펀지 블록의 6개 각 면에서 거리가 1이므로 스펀지 블록 자리를 포함해 총 7개의 물 블록을, 2인 구는 25개, 3인 구는 63개, 4인 구는 129개의 물 블록을 흡수해요. 그런데 ❷번 규칙에 따라 스펀지는 총 65개까지 물 블록을 흡수할 수 있기 때문에, 중심에 스펀지 블록을 두면 맨해튼 거리가 3인 구 모양으로 물을 흡수한 뒤 무작위로 2칸의 물을 더 흡수할 거예요.

 

 

우리가 물을 모두 흡수해야 할 가로 3, 세로 3, 높이가 10인 직육면체 공간은 90개의 물 블록으로 채워져 있어요. 한 개의 스펀지 블록이 감당할 수 있는 물의 양인 65개보다 많으므로 스펀지 블록은 한 개 이상 필요해요.

 

스펀지의 ❸번 규칙에 따르면 흡수 절차는 연속해서 일어나기 때문에, 진행 방향에 물이 없다면 옆의 물을 빨아들여 직육면체 모양으로 물을 흡수할 수 있어요. 공간의 가로와 세로 크기는 3이므로, 높이는 7까지 흡수할 수 있어요으로 65보다 작기 때문이지요. 남은의 직육면체의 물 블록은 또 다른 스펀지 블록으로 흡수하면 되므로 총 2개의 스펀지 블록이 필요해요.

 

 

2022년 10월 수학동아 정보

  • 김미래 기자 기자
  • 도움

    최수영(아주대학교 수학과 교수, 아주대학교 과학영재교육원장)
  • 일러스트

    이용석,GIB
  • 디자인

    최서원

🎓️ 진로 추천

  • 수학
  • 컴퓨터공학
  • 게임공학
이 기사를 읽은 분이 본
다른 인기기사는?