jyc4836   2년 전

흐름은 이렇습니다:

1. r, c, t 및 초기 방 상태 arr을 입력받음

2. t초간 spread()와 circ()를 실행.

3. spread(): 미세먼지를 확산시킴

  3.1. 매 시점의 초기 상태는 기억해야 하므로 temp란 이름의 임시 2차원 배열 생성. 여기에 확산된 먼지들의 위치와 수치를 저장

  3.2. for 문 두 개로 방의 각 칸을 순회하면서, 값이 1보다 작은 곳( == 먼지가 없거나 공기청정기인 곳)에선 아무것도 않고 지나감

  3.3. 미세먼지가 있다면, 상하좌우 중 공기청정기가 있거나 벽인 곳이 아닐 경우 먼지 // 5만큼을 떼어 해당 칸으로 옮김

  3.4. temp에 저장해 둔, 확산된 미세먼지를 arr에 적용

4. circ(): 공기청정기가 공기를 순환시킴

  4.1. 맨 왼쪽 열에서 공청기 윗쪽은 아래로 한 칸씩, 아랫쪽은 위로 한 칸씩 먼지를 옮김

  4.2. 맨 위 행과 아래 행은 한 칸씩 왼쪽으로

  4.3. 맨 오른쪽 열에서 공청기 윗쪽은 한 칸씩 위로, 아랫쪽은 한 칸씩 아래로

  4.4. 공청기가 있는 행은 [-1, 0]으로 공청기와 새 공기를 넣은 다음 나머지는 한 칸씩 오른쪽으로 밀어냄

5. 최종 상태에서 셀 전체의 총합을 구한 다음, 공기청정기가 깎아먹은 2를 도로 더해서 출력하고 프로그램을 마침

분명 예시로 주어진 것들은 다 잘 통과하는데... 뭔가 특이한 형태로 먼지와 공기청정기가 배치된 테스트 케이스에서 맛이 가는 것이 아닌가 싶습니다.

댓글을 작성하려면 로그인해야 합니다.