Closed Jewan1120 closed 1 week ago
2 <= 행, 열의 크기 <= 20
20 * 20 * 4 * (20 * 20 - 1)
< 1억이므로 시간 충분함! Point
: 행, 열을 저장qPoint
: 우선순위 큐에서 사용할 정보 저장Point
, d
: 거리(시간)int[][] levelMap
: 로봇, 몬스터 레벨에 대한 정보 저장int[][] monsterIdxMap
: 몬스터의 위치를 idx
를 통해 저장bfs()
dieMonsterCnt
과, robotLevel
증가시키기levelMap
과 monsterIdxMap
에서 제거된 몬스터의 정보 없애기=> 몬스터 탐색 : 최대 몬스터 수 O(N N - 1) => bfs탐색: O(NN) => 총 O(N N (N * N - 1)) 으로 완전탐색 가능
g
: 몬스터들의 레벨이 포함된 그래프Pos robot = new Pos(i, j, 2)
우선순위 큐
를 이용하여 가장 적합한 몬스터 출력몬스터 찾기 우선순위를 {상하좌우} or {상좌하우} 이렇게 방향 탐색으로만 정하려고 했는데 오답이 나와서 그냥 우선순위큐로 문제에서 원하는 대로 우선순위를 설정했습니다 ㅎㅎㅎ 삼성 문제를 풀때 방향에 대한 우선순위가 주어지면 우선순위큐로 해야하는지, 방향 탐색으로만 가능한지 항상 헷갈리는 것 같습니다,,,, ㅎㅎㅎ
if (!isCatch) break;
문제이해 올바르게하고 설계하기! 시뮬레이션 문제는 너무 객체객체하게 생각하지 말기,,, 구현 더 복잡해지기만 함,,,
2 ≤ n ≤ 20
BFS 탐색 O(N N) 몬스터 수(N * N -1) -> 완전 탐색 가능
문제에서 구하는 것
: 전투로봇이 일을 끝내기 전까지 걸린 시간
을 출력
(BFS)
+ 우선 순위큐로 타겟 선정에 따른 정렬 : (compareTo)
Node 객체
선언(x좌표, y좌표, d거리
)
List<Node> temp
: 잡을 수 있는 몬스터를 저장하는 리스트우선순위에 따라 정렬
정렬하는게 어려웠습니다...!! BFS 구현 연습도 많이 많이 하기....
BFS
+ 구현
2 ≤ n ≤ 20
BFS 탐색을 통해 각 로봇마다 최단거리를 구할 경우 O(N*N*19)
> 10^4
거리 > 행 > 열
BFS로 특정 목적지까지의 최단거리를 매번 어떻게 구해야 할 때는 최단거리 저장 테이블을 만들고, 최단거리를 저장 + 탐색종료 시 초기화 하기★
BFS
를 진행하기에 충분BFS
로 처리할 수 있는 최단 거리 몬스터 찾기
BFS
진행BFS
를 진행하기 전에 몬스터가 있다면 없애고 해당 위치에서 다시 BFS
진행이동하는 순서를 위,왼쪽 탐색하는 방식으로 하니깐 틀려서 우선 순위 큐 사용했습니다.. 앞으로 조심하기