728x90
문제에 과정이 나타나있으므로 필요한 함수를 구현할 수 있습니다.
구사과의 성능 테스트는 다음과 같은 작업이 순차적으로 이루어지며, 가장 처음에 모든 칸의 온도는 0이다. 문제의 그림에서 빈 칸은 온도가 0인 칸을 의미한다.
1. 집에 있는 모든 온풍기에서 바람이 한 번 나옴
2. 온도가 조절됨
3. 온도가 1 이상인 가장 바깥쪽 칸의 온도가 1씩 감소
4. 초콜릿을 하나 먹는다.
5. 조사하는 모든 칸의 온도가 K 이상이 되었는지 검사. 모든 칸의 온도가 K이상이면 테스트를 중단하고, 아니면 1부터 다시 시작한다.
여기서 크게 온풍기에서 바람이 나오는 함수, 온도 조절 함수, 조사가 필요한 칸의 온도를 체크하는 함수를 구현하면 됩니다.
첫 번째로 온풍기에서 바람이 나오는 함수 heat는 queue를 이용하여 바람을 퍼트릴 수 있게 구현했습니다. 어떤 칸 (x,y)에서는 (x-1,y+1), (x,y+1), (x+1,y+1)로 바람이 나오기 때문에 쉽게 구현할 수 있습니다. 이 함수에서 중요한 점은 바람이 통과하지 못하는 벽의 존재입니다. 문제 내에 어디에 벽이 있을 때 바람이 통과하지 못한다는 조건이 설명되어 있어 그대로 구현하면 됩니다.(이 조건이 그림과 그림 사이에 있어 놓치기 쉽습니다.)
두 번째로 온도 조절 함수인 spread 함수도 벽을 참고하여 바람이 통과하지 못하도록 구현해야 합니다. 또한, 모든 조절 과정이 동시에 이루어져야 하므로 똑같은 공간을 선언하여 변화량을 저장하고 나중에 합산하는 방식으로 구현했습니다.
마지막으로 온도 체크 함수 check는 칸이 5인 목록을 따로 저장하여 모두 체크하면 됩니다.
728x90