일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백트래킹
- Spring Framework
- 프로그래머스
- BFS
- Python
- 스타벅스
- 머신러닝
- dfs
- C++
- 릿코드
- C/C++
- 딥러닝
- 벤쿠버
- 다이나믹프로그래밍
- 파이썬
- binary search
- jvm
- 알고리즘
- 백준
- 프로그래밍언어론
- 라인플러스
- STL
- Java
- 모두를 위한 딥러닝
- 스프링 프레임워크
- 라인
- 시애틀
- spring
- leetcode
- DP
- Today
- Total
케이스윔의 개발 블로그
[백준 알고리즘] 1743번 음식물 피하기 본문
문제
코레스코 콘도미니엄 8층은 학생들이 3끼의 식사를 해결하는 공간이다. 그러나 몇몇 비양심적인 학생들의 만행으로 음식물이 통로 중간 중간에 떨어져 있다. 이러한 음식물들은 근처에 있는 것끼리 뭉치게 돼서 큰 음식물 쓰레기가 된다.
이 문제를 출제한 선생님은 개인적으로 이러한 음식물을 실내화에 묻히는 것을 정말 진정으로 싫어한다. 참고로 우리가 구해야 할 답은 이 문제를 낸 조교를 맞추는 것이 아니다.
통로에 떨어진 음식물을 피해가기란 쉬운 일이 아니다. 따라서 선생님은 떨어진 음식물 중에 제일 큰 음식물만은 피해 가려고 한다.
선생님을 도와 제일 큰 음식물의 크기를 구해서 “10ra"를 외치지 않게 도와주자.
입력
첫째줄에 통로의 세로 길이(N<=100)과 가로길이(M<=100) 그리고 음식물 쓰레기의 개수(K<=10,000)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표가 주어진다.
출력은 음식물 중 가장 큰 음식물의 크기이다
풀이
음식물들이 근처에 있는 것끼리 뭉친다는 것은 하나의 컴포넌트를 만든다는 말 같다 하나의 컴포넌트 안에 가장 많은 vertex를 포함하는 경우를 찾아야겠다 한번 DFS가 시작될 때 마다 각 컴포넌트의 수를 센다 근데 일단 input 이 바로 그래프로 들어오는게 아니고 행렬의 일부 좌표가 들어오기때문에 그래프로 만들어주는 부분도 같이 해주면되겠다
근데 만들었던 DFS쓸려니까 행렬로 들어오는 input을 쓰기엔 비효율적인거같아서 전에 풀었던 유기농배추처럼 풀어봐야겠다
코드는 유기농배추에서 cnt++만 추가해줘서 가장 큰 cnt를 출력해주면된다
* n, m 헷갈려서 반대로 썼다가 몇번 틀리고 맞았습니다 받았다 ㅠㅠ
'Algorithm' 카테고리의 다른 글
[백준 알고리즘][완전탐색] 223번 분해합 (0) | 2018.02.12 |
---|---|
[백준 알고리즘][완전탐색] 2309번 일곱 난쟁이 (0) | 2018.02.12 |
[백준 알고리즘] 2667번 단지번호붙이기 (0) | 2018.01.18 |
[c++] vector로 DFS 구현하기 (0) | 2018.01.17 |
[백준 알고리즘] 3163번 떨어지는 개미 (0) | 2018.01.16 |