MoveCrashingWall2

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋‹ค์Œ ์ด๋™ํ•  ์ขŒํ‘œ๋ฅผ (nx,ny)๋ผ๊ณ  ํ•  ๋•Œ map[nx][ny] == '1'์ผ๋•Œ๋ž‘ map[nx][ny] == '0' 2๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ ์„œ ํ‘ผ๋‹ค. ์ฒซ๋ฒˆ์งธ ๊ฒฝ์šฐ ๋ฒฝ ๋ถ€์ˆœ ํšŸ์ˆ˜๊ฐ€ k๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋‹ค์Œ ์ขŒํ‘œ๋กœ ์ง„ํ–‰๊ฐ€๋Šฅ!

ํ‹€๋ฆฐ ๋ถ€๋ถ„

  1. map[nx][ny] == '1'์ผ ๋•Œ ๋ฐฉ๋ฌธ ์ฒดํฌํ•˜๋Š” ์ขŒํ‘œ๊ฐ’์€ visited[nx][ny][1]์ด ์•„๋‹ˆ๋ผ visited[nx][ny][cur.dCnt+1]์ด ๋œ๋‹ค! ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•  ์ขŒํ‘œ์— ๋Œ€ํ•ด ์ค‘๋ณต ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ์ฒดํฌ!!!

if(map[nx][ny] == '1'){
    if(cur.dCnt<k && !visited[nx][ny][cur.dCnt+1]){
        q.add(new Point(nx,ny,cur.dCnt+1,cur.dist+1));
        visited[nx][ny][cur.dCnt+1] = true;
    }
}

2. visited ๋ฐฐ์—ด ํฌ๊ธฐ k๋Š” ๋ฒฝ์„ ๋ถ€์ˆ  ์ˆ˜ ์žˆ๋Š” ํšŸ์ˆ˜์ด๋‹ค. k๊ฐ€ 2๋ผ๊ณ  ํ•˜๋ฉด k = 0->1->2 ์ด๋Ÿฐ์‹์œผ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ visited ๋ฐฐ์—ด๋ฐฉ์„ ์ƒ์„ฑํ•  ๋•Œ 3๋ฒˆ์งธ ์ฐจ์›์˜ ํฌ๊ธฐ๋Š” k+1 ๋กœ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค!

Last updated