choiyoujun   3년 전

세그먼트 트리로 풀어봤는데,

어느 부분에서 시간 초과가 나오는지 모르겠습니다.

println()이 출력이 느리다하여 BufferedWriter로도 변경해봤습니다.

scvhero   3년 전

update를 필요한 부분에만 하는게 아니라 매번 트리 전체에 대해 수행하는 것 같군요

choiyoujun   3년 전

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로 정상적인 값이 출력됩니다.

댓글을 작성하려면 로그인해야 합니다.