백준 java 2

[백준 14595 JAVA] 동방 프로젝트 (Large)

연산 시간을 최대한 죽여야하는 문제.N이 상당히 크기때문에 최소한의 연산으로 결과가 나오게 만들어야한다. 접근방법처음엔 union find를 생각했었으나, input이 2 4, 1 3 이런식으로 들어오게된다면 2 4에 대한 union find 연산을 한번 더 해야하므로 기각. 그렇다면 priority queue를 사용해 input을 미리 정렬해놓고 차례로 union find를 한다면 중복되는 union find연산을 피할 수 있을 것 같았다. 이렇게 된다면 union find를 굳이 쓸필요없이 그냥 입력의 앞에꺼를 덮어씌우면 되어 구조를 변경했다. priority queue로 시작점 기준 오름차순 종료지점 기준 내림차순으로 정렬한 뒤, 종료지점의 max를 저장한다.pq의 다음 요소가 max보다 작으면 굳..

알고리즘 2024.05.08

[백준 1726 JAVA] 로봇

bfs문제 다른 문제와 다르게 방향과 이동 칸까지 맞춰줘야해서 조금 까다로울 수 있다. 풀이방법은 방향별로 visit을 만들어, 해당 위치와 방향을 방문하였는지 체크하면 된다. 이동 칸의 경우 한칸 앞에서부터 검사를 하여, 칸이 막혀있기 전가지만 큐에 넣어주면 된다. 최소명령으로 이동하는 것 이기때문에 우선순위 큐 를 사용해서 자동정렬시켜준다. 90도씩만 고개를 돌릴 수 있기때문에 이것또한 신경써야한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; class Main ..

알고리즘 2024.03.22