이 문제는 곡괭이를 한 번 선택하면 광물을 최대 5개까지 연속으로 캐야 합니다.
따라서 처음에는 다음과 같이 생각했었습니다.
예를 들어 다이아몬드, 철, 돌 곡괭이가 모두 남아 있다면 다음 세 경우로 나누었습니다.
현재 광물 묶음
├─ 다이아몬드 곡괭이 사용
├─ 철 곡괭이 사용
└─ 돌 곡괭이 사용
각 선택 이후에도 다시 남은 곡괭이를 선택해야 하므로 DFS를 사용했습니다.
이 문제에서 DFS의 한 단계는 광물 하나를 캐는 과정이 아니라, 곡괭이 하나를 선택하여 광물을 최대 5개 캐는 과정으로 잡았습니다.
각 곡괭이와 광물의 등급을 다음처럼 숫자로 표현했었습니다.
const pick_fatigue = {
diamond: 3,
iron: 2,
stone: 1,
};
사용한 곡괭이의 등급에서 광물의 등급을 뺀 결과로 피로도를 판단했습니다.
const fatigue =
pick_fatigue[used] - pick_fatigue[stone];
if (fatigue >= 0) {
original_cnt += 1;
} else if (fatigue >= -1) {
original_cnt += 5;
} else {
original_cnt += 25;
}
각 경우는 다음과 같습니다.