lunartown   1년 전

뒤집는 연산 R과 앞의 요소 하나를 제거하는 D 연산을 구현하는 문제입니다.

뒤집는 연산이 시간이 오래 걸려 rev 변수를 주고 R연산시에 + - 만 바꾸게 하고,

대신 D연산이나 출력시에 rev 상태가 -이면 거꾸로 연산하도록 만들어서

시간초과가 날 부분이 안 보이는데 자꾸 시간초과가 납니다.

도움 주시면 감사하겠습니다.

djm03178   1년 전

toString, revString에서 정답 문자열을 만드는 과정이 매우 비효율적입니다. Java의 String 객체는 immutable하기 때문에 72, 82번째 줄과 같은 연산은 모두 기존의 str의 내용을 전부 복사해서 새로운 String 객체를 만든 뒤 그 뒤에 문자열을 덧붙이는 과정을 거칩니다. 그래서 정답 문자열을 하나를 만드는 데에 원소의 수의 제곱에 비례하는 시간이 걸립니다.

lunartown   1년 전

안녕하세요, 답변 감사드립니다.

String 만드는 부분을 모두  stringbuilder append로 고쳤는데 여전히 시간초과가 납니다 ㅠㅠ

deque.get(i)부분도 문제인 것 같은데 혹시 좋은 방법이 있을까요?

lunartown   1년 전

@djm03178

iterator로 고쳤더니 통과했네요 ㅎ 감사합니다!

djm03178   1년 전

아, 그 부분이 느린 것도 맞습니다.

그거는 get 대신 removeFirst와 removeLast로 빼면서 진행하면 됩니다.

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