티스토리 뷰

BOJ

[ 백준 16236 ] 아기상어

wo_ody 2020. 11. 24. 22:19
아기상어

문제

문제 이동

문제 설명

  • 아기 상어가 거리가 가까운 물고기를 어떻게 찾아야 할까 ?

    • BFS ( bool 방문 배열 )
  • BFS 를 통해 물고기를 찾는 과정에서 어떤 자료구조를 사용해야 할까 ?

    • queue pair
  • (✅)거리가 같은 물고기들이 많다면 가장 위쪽 , 가장 왼쪽인 물고기를 어떻게 알 수 있을까 ?

    • BFS 를 돌면서 물고기들을 만날때마다 vector pair 에 저장해두어 sort 를 이용.

 

구현

  1. 초기 queue 에 상어의 위치를 넣고 , 방문 배열을 false 로 만들어 준다.
  1. queue 의 size 동안

    queue의 front 좌표에 물고기를 먹을 수 있다면 => vector 용기에 담아줌

    물고기를 먹을 수 없다면

    (1). 배열 범위 넘지 않고

    (2). 방문 배열이 false 이고

    (3). 상어 크기보다 작거나 같다면 !!!!!! => queue 에 방향 담아줌.

  1. 만약 vector 의 size 가 1보다 같거나 크다면 ( 물고기 먹방이 시작되는거임 )

    sort ( vector )을 해준뒤 vector 맨 앞의 front 값으로

    아기상어의 새로운 시작을 위해

    (1). 아기 상어가 먹은 먹이 공간(?) 0으로 만들고

    (2). vector 다 비우고,

    (3). queue에는 현재 아기 상어의 좌표만 담아주고,

    (4). 방문배열 현재 아기 상어 true 로 만들고

    (5). 아기 상어가 먹은 물고기 +1

    (6). 최종 시간(최종 정답) += cnt // 아기 상어가 물고기 먹으러 갔던 시간들

     

    만약 아기 상어가 먹은 물고기 == 아기 상어 크기 라면 아기 상어 크기 +1 과 먹은 물고기는 0으로 초기화

     

  2. cnt ++ // 아기 상어가 물고기 먹으러 갔던 시간

 

2, 3번의 과정을 queue 가 비었을 때까지 반복해주면 된다.

 

 

 

'BOJ' 카테고리의 다른 글

[ 백준 17144 ] 미세먼지 안녕 !  (2) 2020.11.26
[ 백준 16235 ] 나무 재테크  (0) 2020.11.24
[ 백준 1406 ] 에디터  (3) 2020.11.05
[ 백준 15684 ] 사다리 조작  (0) 2020.10.08
[백준 13458] 시험감독  (0) 2020.04.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함