우선, '/' 연산을 하고 나면 나머지를 버리기 때문에, 거리 판단에서 로직이 잘못되었습니다.
input
22
0 0
1000 0
1000 1000
2000 1001
2
0 0
1000 0
2000 1000
2000 2000
output
happy (sad가 나와야 함)
sad
TMI: 이 문제는 BFS 말고도 해결이 가능해요!
단 for문 3개만으로 최단경로를 찾아낼 수 있는 floyd-warshall 알고리즘을 적용하면 됩니다.
1. 집, 편의점들, 페스티벌 장소를 정점으로 보고, 서로 거리를 계산해서 20*50=1000블럭 이하이면 갈 수 있다(1), 아니면 없다(INF)으로 표시한다.
2. floyd-warshall 알고리즘으로 모든 정점쌍들 사이 최단경로를 찾는다.
3. 만약 집에서 페스티벌 장소까지 최단경로(<INF)가 존재하면 happy, 존재 안하면 sad를 출력한다.
hik3562 4년 전
틀렸습니다.. 가 되는데
1. 홈에서 편의점 거리 1000 내 있는거 따로 저장하는 Queue
2. 편의점을 다 저장하는 ArrayList
3. 이걸 BFS 로 돌려서 홈에서 시작해서 현재위치를 Queue에 저장되어 있는 편의점 좌표로 계속 갱신,이동할 수 있는 곳이면 Queue에 저장
4. Lock Festival 와 1000 거리 내 있으면 haapy
5. Queue 를 다 봐도 없으면 sad
위 로직으로 구성하였습니다.
조언 부탁드립니다. 감사합니다.