5430번 - AC
뒤집는 연산 R과 앞의 요소 하나를 제거하는 D 연산을 구현하는 문제입니다.
뒤집는 연산이 시간이 오래 걸려 rev 변수를 주고 R연산시에 + - 만 바꾸게 하고,
대신 D연산이나 출력시에 rev 상태가 -이면 거꾸로 연산하도록 만들어서
시간초과가 날 부분이 안 보이는데 자꾸 시간초과가 납니다.
도움 주시면 감사하겠습니다.
toString, revString에서 정답 문자열을 만드는 과정이 매우 비효율적입니다. Java의 String 객체는 immutable하기 때문에 72, 82번째 줄과 같은 연산은 모두 기존의 str의 내용을 전부 복사해서 새로운 String 객체를 만든 뒤 그 뒤에 문자열을 덧붙이는 과정을 거칩니다. 그래서 정답 문자열을 하나를 만드는 데에 원소의 수의 제곱에 비례하는 시간이 걸립니다.
안녕하세요, 답변 감사드립니다.
String 만드는 부분을 모두 stringbuilder append로 고쳤는데 여전히 시간초과가 납니다 ㅠㅠ
deque.get(i)부분도 문제인 것 같은데 혹시 좋은 방법이 있을까요?
@djm03178
iterator로 고쳤더니 통과했네요 ㅎ 감사합니다!
아, 그 부분이 느린 것도 맞습니다.
그거는 get 대신 removeFirst와 removeLast로 빼면서 진행하면 됩니다.
댓글을 작성하려면 로그인해야 합니다.
lunartown 1년 전
뒤집는 연산 R과 앞의 요소 하나를 제거하는 D 연산을 구현하는 문제입니다.
뒤집는 연산이 시간이 오래 걸려 rev 변수를 주고 R연산시에 + - 만 바꾸게 하고,
대신 D연산이나 출력시에 rev 상태가 -이면 거꾸로 연산하도록 만들어서
시간초과가 날 부분이 안 보이는데 자꾸 시간초과가 납니다.
도움 주시면 감사하겠습니다.