khjean4078   3년 전

답안 제출하면 시간초과 에러가 발생합니다. ㅠㅠ

길이가 100만이어서 메모리 초과 막기위해 char 배열에 2진수를 담아서 처리를 하는 방식이고

3자리씩 끊어서 계산하는 방법입니다.

원래 이런코드로 하면 시간초과가 날수 밖에 없는건지 모르겠어요 ㅠ

고수님들 도와주세요!!



djm03178   3년 전

String 객체는 immutable 한 객체입니다. 그 말은 += 연산자가 기존의 문자열을 내용을 바꾸는 것이 아니라 모든 내용을 새로운 객체에 복사하고 뒤에 덧붙인다는 의미입니다. 따라서 이 작업을 n번 수행하는 일은 n^2 의 시간이 걸립니다.


이 문제를 해결하는 방법으로 StringBuilder 를 쓰는 것이 있습니다.

khjean4078   3년 전

도와주셔서 갑사합니다!! StringBuilder를 쓰니 바로 해결됬네요. String 연산을 생각없이 했었는데 immutable 한 객체인지 처음알았습니다 ㅠㅠ GC의 대상도 되었을테니 메모리 낭비도 하고있었을테죠.. 덕분에 String 객체에 대해 많이 알고갑니다!

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