세그먼트 트리(2)
-
[백준 / BOJ][Python] 5419 - 북서풍
[백준 / BOJ][Python] 5419 - 북서풍 https://www.acmicpc.net/problem/5419 5419번: 북서풍 각 테스트 케이스에 대해서, 북서풍을 타고 항해할 수 있는 섬의 쌍의 수를 출력한다. www.acmicpc.net 문제 풀이 상당히 많은 아이디어가 필요한 문제. 항상 왼쪽 위에서 오른쪽 아래로만 진행할 수 있다는 부분을 어떻게 처리할지가 문제의 풀이를 결정한다. x값을 기준으로 정렬하고, y값은 세그먼트 트리를 통해 현재 위치의 좌표 보다 더 큰 값이 몇 개 있었는지 저장했다. 입력 받은 y값을 그대로 사용하여 세그먼트 트리를 만들면 메모리 초과가 나기에 좌표 압축을 통해 세그먼트 트리의 크기를 줄여줬다. 또한, 재귀적인 방법으로 세그먼트 트리를 구현하면 시간 초과..
2023.03.16 -
[백준 / BOJ][Python] 9345 - 디지털 비디오 디스크(DVDs)
[백준 / BOJ][Python] 9345 - 디지털 비디오 디스크(DVDs) https://www.acmicpc.net/problem/9345 9345번: 디지털 비디오 디스크(DVDs) 손님이 DVD를 카운터에 가져왔을 때 손님이 원하는 DVD가 전부 존재하면, (A번 선반부터 B번 선반까지에 있는 DVD를 전부 가져왔을 때 순서에 상관없이 A번 DVD부터 B번 DVD까지 있다면) "YES"를 출력하 www.acmicpc.net 문제 풀이 세그먼트 트리를 이용하는 문제. 처음에는 A부터 B까지의 구간 합이 A + (A + 1) + ... + (B - 1) + B이면 진열에 문제가 없다고 판단했다. 그러나 A = 2, B = 4라 하면 2, 3, 4 뿐 아니라 1, 3, 5의 경우에도 합이 9이기 때문..
2023.02.25