일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dfs
- 백준 5430 c++
- 동적계획법
- 백준 double rainbow
- icpc 2021
- 너비우선탐색
- 백준 23567
- 깊이우선탐색
- BFS
- 백준 1094 막대기
- 23567 c++
- 백준
- C++
- 백트래킹
- 백준 더블 레인보우
- 백준 암호만들기 c++
- dp
- 막대기 c++
- 1094 c++
- 백준 암호만들기
- 백준 1759 c++
- 백준 1094 막대기 c++
- 백준 1094 c++
- 다이나믹 프로그래밍
- 암호만들기 백트래킹
- double rainbow c++
- 백준 double rainbow c++
- 1759 c++
- 백준 23567 c++
- 암호만들기 c++
- Today
- Total
dev study-log
[백준 / #2667 / C++] 단지번호붙이기 본문
이 문제는 저번에 다룬 미로 탐색 문제와 상당히 유사하다고 생각한다.
https://www.acmicpc.net/problem/2667
이 링크는 저번 문제의 링크이다. 문제풀이에서 상당히 겹치는 부분이 많으니 아래 링크를 참고하길 바란다.
https://seoul-doggy.tistory.com/4
이번 문제는 보자마자 떠올랐다. 너비우선탐색(BFS) 문제이구나.
사실 저번 문제에서 아파트의 개수를 세어주는 거만 추가하면 되는 아주 간단한 문제이다.
그나저나 이 문제 출처가 초등부,,역시 세상은 넓고 천재는 많다,,,
우선 코드부터 보자.
저번 문제에서 크게 벗어나지 않는 문제이다.
사실 코드는 거의 똑같고 큐에서 노드를 하나씩 뺄 때마다 개수를 세어주는 거만 제외하면 같다.
이렇게 개수를 세어주고 한 아파트 단지의 아파트 개수 세기가 완료되면 너비우선탐색을 멈추게 된다. (큐에 더이상 들어
가있는 노드가 없기 때문) 그러면 아파트의 개수를 return 해주고 이를 ans 벡터에 저장한다. 그렇게 map을 하나씩 돌며
'1'을 탐색한다. '1' 하나만 찾아도 한 아파트 단지의 탐색이 끝나면 이 단지는 모두 '0'이 되므로 중복이 될 걱정은 안해도 되
며 하나만 찾아도 그 아파트 단지는 모두 탐색이 되기 때문에 '1' 하나만 찾아도 된다.
map에서 '1'을 찾는 더욱 빠른 알고리즘이 있을 수도 있는데 나는 찾지 못했다. 그리고 문제에서 주어진 쟈료의 최대 크기
가 작았기 때문에 (25 X 25) 이중 for문으로도 충분히 커버가 가능할 것이라고 생각했다.
저번 문제와 너무 비슷한 문제였기 때문에 시간도 얼마 걸리지 않았다. 이상 더 궁금한 점이 있다면 저번 문제의 링크를 참
고하면 되겠다.
'Algorithm' 카테고리의 다른 글
[백준 / #7576 / C++] 토마토 (1) | 2023.01.14 |
---|---|
[백준 / #2447 / C++] 별 찍기 - 10 (0) | 2023.01.14 |
[백준 / #2178 / C++] 미로 탐색 (0) | 2023.01.10 |
[백준 / #1213 / C++] 팰린드롬 만들기 (0) | 2023.01.09 |
[백준 / #1010 / C++] 다리놓기 (0) | 2023.01.09 |