세그먼트트리 2465 줄세우기 예제 입력1 예제 출력1 노드 접근시 노드의 합에서 -1 해준다. 왼쪽 노드 접근 조건 : Position ≤ 왼쪽 노드의 합 오른쪽 노드 접근 조건 : Position > 왼쪽 노드의 합 → Postion = Position - 왼쪽 노드의 합 풀이 소스... 2465 줄세우기세그먼트트리2465 줄세우기 세그먼트트리 구간에서 최소값 구하기 배열 A[1], A[2], … , A[N]가 있고, 이중 A[i], … ,A[j] 중에서 최소 값을 찾아 출력 이러한 연산이 총 Q개 주어짐 1개 : O(N) O(N) , Q개 : O(NQ) N,Q <= 10만 O(NQ)N,Q<=10만 자식 2개 또는 없음. 노드는 start ~ end 까지 최소 값을 가지고 있음 start ~ mid 와 mid+1-end 두 개의 최... 세그먼트트리세그먼트트리 [python] 백준 11505 : 구간 곱 구하기 이 구간 안에 어떤 수가 2였다고 치자. 이 수 2를 3으로 바꾸려고 한다. 그러면 (1조 // 2) * 3 을 해주면 될 것이다. 그래서 우리는 이 1조를 MOD = 1,000,000,007 로 나누었던 것이다. 이 수는 2로 나누어지지도 않는다. 결론적으로 모듈로 연산이 된 수는 나누기 연산에서는 전혀 다른 값이 될 수 있다는 것이다. 우리가 예상한 값이 보장되지 않으므로 기존 값을 나누... 세그먼트트리알고리즘백준파이썬백준 [python] 백준 6549 : 히스토그램에서 가장 큰 직사각형 문제 링크 접근 주어진 n은 10만이고, 각 직사각형의 최대 높이는 10억이다. (높이로 뭐 할 생각 하지말자...) 시간 복잡도는 O(n^2) 보다는 좋아야 할 것이므로 분할하여 탐색하는 것을 생각했다. 문제를 보면 연속된 직사각형들의 넓이를 미리 구해놓는 작업을 하면 편해보인다. 따라서 세그먼트 트리를 이용한 접근을 생각했다. 풀이 이 문제에서 가장 큰 직사각형을 구하는 알고리즘은 다음과... 알고리즘세그먼트트리백준파이썬분할정복백준 [python] 백준 1275 : 커피숍2 문제 링크 접근 세그먼트 트리로 구간합을 구하는 정형화된 문제이다. 풀이 세그먼트 트리를 만든다. 구간합을 저장해놓는다. 코드는 다음과 같다. 입력 형식은 x y a b 로 x~y 까지의 구간 합을 구하고(get()), a번째 수를 b로 바꾸는 작업(change())을 반복한다. 정답 코드... 알고리즘세그먼트트리백준파이썬백준
2465 줄세우기 예제 입력1 예제 출력1 노드 접근시 노드의 합에서 -1 해준다. 왼쪽 노드 접근 조건 : Position ≤ 왼쪽 노드의 합 오른쪽 노드 접근 조건 : Position > 왼쪽 노드의 합 → Postion = Position - 왼쪽 노드의 합 풀이 소스... 2465 줄세우기세그먼트트리2465 줄세우기 세그먼트트리 구간에서 최소값 구하기 배열 A[1], A[2], … , A[N]가 있고, 이중 A[i], … ,A[j] 중에서 최소 값을 찾아 출력 이러한 연산이 총 Q개 주어짐 1개 : O(N) O(N) , Q개 : O(NQ) N,Q <= 10만 O(NQ)N,Q<=10만 자식 2개 또는 없음. 노드는 start ~ end 까지 최소 값을 가지고 있음 start ~ mid 와 mid+1-end 두 개의 최... 세그먼트트리세그먼트트리 [python] 백준 11505 : 구간 곱 구하기 이 구간 안에 어떤 수가 2였다고 치자. 이 수 2를 3으로 바꾸려고 한다. 그러면 (1조 // 2) * 3 을 해주면 될 것이다. 그래서 우리는 이 1조를 MOD = 1,000,000,007 로 나누었던 것이다. 이 수는 2로 나누어지지도 않는다. 결론적으로 모듈로 연산이 된 수는 나누기 연산에서는 전혀 다른 값이 될 수 있다는 것이다. 우리가 예상한 값이 보장되지 않으므로 기존 값을 나누... 세그먼트트리알고리즘백준파이썬백준 [python] 백준 6549 : 히스토그램에서 가장 큰 직사각형 문제 링크 접근 주어진 n은 10만이고, 각 직사각형의 최대 높이는 10억이다. (높이로 뭐 할 생각 하지말자...) 시간 복잡도는 O(n^2) 보다는 좋아야 할 것이므로 분할하여 탐색하는 것을 생각했다. 문제를 보면 연속된 직사각형들의 넓이를 미리 구해놓는 작업을 하면 편해보인다. 따라서 세그먼트 트리를 이용한 접근을 생각했다. 풀이 이 문제에서 가장 큰 직사각형을 구하는 알고리즘은 다음과... 알고리즘세그먼트트리백준파이썬분할정복백준 [python] 백준 1275 : 커피숍2 문제 링크 접근 세그먼트 트리로 구간합을 구하는 정형화된 문제이다. 풀이 세그먼트 트리를 만든다. 구간합을 저장해놓는다. 코드는 다음과 같다. 입력 형식은 x y a b 로 x~y 까지의 구간 합을 구하고(get()), a번째 수를 b로 바꾸는 작업(change())을 반복한다. 정답 코드... 알고리즘세그먼트트리백준파이썬백준