update를 필요한 부분에만 하는게 아니라 매번 트리 전체에 대해 수행하는 것 같군요
2042번 - 구간 합 구하기
1. 40번째 줄 val arr: LongArray에서 val arr: MutableList<Long>으로 변경 뒤 숫자를 append해서 연산한 결과
"시간 초과" -> "런타임 에러"로 채점 메시지가 바뀌었고
2. 2번째 줄 arr.size * 2를 arr.size * 4로 변경 뒤 채점한 결과
"런타임 에러" -> "틀렸습니다"로 채점메시지가 바뀌었습니다.
3. 51번째 줄에서 내용을
val diff = c.toLong() - arr[b - 1]
arr[b - 1] = c.toLong()
tree.update(0, arr.size - 1, 1, b - 1, diff)
로 변경한 결과
"틀렸습니다" -> "맞았습니다"로 문제 풀이 성공했습니다.
51번째 줄을 변경하기 전, 테스트 케이스로 다음과 같은 값을 입력하면
1 2 2
0
1 1 1
2 1 1
1 1 2
2 1 1
출력 값으로 1과 3이 나왔지만
수정된 코드로 1과 2로 정상적인 값이 출력됩니다.
댓글을 작성하려면 로그인해야 합니다.
choiyoujun 3년 전
세그먼트 트리로 풀어봤는데,
어느 부분에서 시간 초과가 나오는지 모르겠습니다.
println()이 출력이 느리다하여 BufferedWriter로도 변경해봤습니다.