https://www.acmicpc.net/problem/2357
세그먼트 트리 문제다.
풀이
각 노드에 (Int, Int) 자료형을 통해 최솟값과 최댓값을 담는 세그먼트 트리를 생성하여, 각 구간별 최솟값과 최댓값이 담기는 세그먼트 트리를 생성하여 조건에 맞게 출력하면 된다.
[1,2,3,4,5] 배열을 기준으로 만든 세그먼트 트리다. 리프노드에는 동일한 값을 넣었다.
트리를 읽어야 할 때는 구간에 해당하는 노드를 탐색, 각각의 최댓값과 최솟값을 비교하여 반환하면 된다.
해당 그림은 1 ~ 4번 인덱스 구간의 최솟값, 최댓값을 읽어올 때 참고하게 될 노드다.
범위 밖의 노드라면 입력 범위의 최댓값과 최솟값을 바꾸어 출력하게 하였다. ((1,000,000,000, 1) 리턴)
정답 코드
'Problem Solving > BOJ' 카테고리의 다른 글
[14428] 수열과 쿼리 16 (0) | 2023.02.17 |
---|---|
[11505] 구간 곱 구하기 (0) | 2023.02.16 |
[2042] 구간 합 구하기 (0) | 2023.02.15 |
[2533] 사회망 서비스(SNS) (0) | 2023.02.13 |
[11054] 가장 긴 바이토닉 부분 수열 (0) | 2023.02.12 |