Closed KodaHye closed 3 weeks ago
6 <= n, m <= 50
1 <= t <= 1,000
50 50 1,000 < 1억이므로 주어진대로 구현해도 시간이 충분int[][] map
: 먼지량을 저장하는 배열Sigong[] sigong
: 시공의 돌풍 위치를 저장하기 위한 배열step1()
: 먼지가 인접한 4방향으로 확산
int[][] tmp
: 좌표별 먼지의 변화량을 저장하는 변수
tmp
의 값을 설정해줌tmp
값을 설정해준 이후, map
의 먼지량 갱신step2()
: 시공의 돌풍 청소
sigong[0]
과 sigong[1]
의 경우를 나누어서 생각idx: 0
idx: 1
getSum()
map
을 확인하며 먼지의 총 합계 구하기 spread()
rotate()
calculate()
1. spread(): 먼지확산
2. clean(): 돌풍 청소
시계방향
반시계방향
완전탐색 가능
먼지 확산 (diffusion()
)
청소기 실행 (cleanUp()
, cleanDown()
)
cleanUp()
: (R,0) -> (R,M) -> (0,M) -> (0,0) -> (0,0)cleanDown()
: (R,0) -> (R,M) -> (N,M) -> (N,0) -> (R,0)6 ≤ n, m ≤ 50 -> 주어진 시간 내 구현 가능
spread()
temp
에 저장 -> 확산 -> 원래 배열에 반영clean()
6 ≤ n, m ≤ 50
폭풍 횟수 1 ≤ t ≤ 1,000
BFS 알고리즘으로 구현할 경우 O(n*m*t*4)
> 10^6
bfs(int n, int m)
BFS 너비 탐색을 통해 확산된 먼지 계산하기goTornado(int n, int m, int[] tornado)
문제 요구사항 대로 윗면,아랫면을 나눠서 시공의 돌풍이 청소하기