Closed yeongleej closed 1 month ago
🤔 시간복잡도 고려사항
💡 풀이 아이디어
첫번째 아이디어 (틀림)
BFS
BFS
Node[] stores
: 편의점은 배열로 같이 받기처음에 stores는 편의점만, visited는 집과 도착점도 포함해줬는데 그럼 인덱스가 꼬여서, visited도 깔끔하게 편의점만 체크
거리 계산
calDist()
🤔 시간복잡도 고려사항
BFS
시간 복잡도 O(V + E) ->O(n^2)
가능💡 풀이 아이디어
BFS
n+2
(편의점 (n) + 집, 페스티벌)Point 클래스
사용하여 x, y좌표를 받음Queue
이용해서 다음 방문 가능한 지점(편의점, 페스티벌) 탐색 distance
함수로 맨하튼 거리 계산하여 방문 가능할 경우 -> "happy"객체 사용을 자주 습관화 하자..!
🤔 시간복잡도 고려사항
💡 풀이 아이디어
0-1 BFS
실행🤔 시간복잡도 고려사항
2 <= 집 + 편의점 + 락 페스티벌 <= 102
102C2 × 2
O(ElogV)
E
: 간선의 수, V
: 노드의 수💡 풀이 아이디어
Point p[]
: 집, 편의점, 락 페스티벌의 좌표를 저장하는 변수ArrayList<Node>[] adj
: 주어진 지점에 대해 갈 수 있는 모든 간선 만들기dijkstra(0)
: 0에서 시작해서 페스티벌 지점까지 갈 수 있는지 확인하기🤔 시간복잡도 고려사항
t ≤ 50
, 편의점 갯수 0 ≤ n ≤ 100
모든 지점 간의 거리 계산 시 N * (N-1) = O(N^2)
> 50 (100^2) = 50 10000 = 500,000 > 10^5
으로 BFS 풀이가능💡 풀이 아이디어
20병
* 50미터
에 한 병씩 맥주마심 = 최대 1000미터
집 > 페스티벌
거리가 1000미터 이하
일 경우 "happy"편의점 > 집 > 페스티벌
인 경우를 고려할 때 현재 지점에서 페스티벌까지 최단거리인지 너비 탐색이 필요함방문 체크
, 거리 조건 검사
를 통해 인근 너비탐색 진행 BFS 를 푸는 방법을 정형화된 공식으로 외워서 공식이 적용되지 않는 문제의 경우 접근 방법을 떠올리기 힘들었어요💦 BFS 알고리즘을 사용하는 목적과 기본개념을 먼저 생각하면 좋았을 것 같아요