알고리즘을 푸는데 결과를 출력할 때 나는 보통 아래와 같이 풀었다.
for(int i=0; i< N; i++){
System.out.println(arr[i]);
}
그런데 문제에서 시간 초과가 났다.
찾아보니 정렬 알고리즘을 제외하고도 저 출력문에도 문제가 있다는 것을 알게 되었다.
다른 사람들 풀이를 찾아보니 출력을 할 때, StringBuilder를 사용해서 풀었다.
그런데 나는 똑같이 for문을 사용하는데 왜 단순 print문은 안 되고, StringBuilder는 되는 걸까?에 대한 의문을 가지게 되었다.
그 이유는 println을 사용하여 출력할 때마다 새로운 라인을 생성하고 출력하는 동작을 수행하는데, 이 과정에서 불필요한 라인 생성 및 출력 작업이 발생하기 때문이다.
그렇기 때문에 연산면에서 많은 시간과 자원을 사용하게 되어 속도가 떨어질 수밖에 없다.
반면에 StringBuilder를 사용하면, 주소 하나에 값만 수정해서 문자열 조작이 한 번에 이루어지고 한 번만 출력하면서 성능이 향상되게 되는 것이다.
버퍼라고 하는 독립적인 공간에 문자열 추가 가능
공간 낭비x, 문자열 연산 속도가 빠르다.
그리고 단어를 이어붙일 때 역시 print문에서 '+'를 이용하여 문자를 합쳐주기 보다는 StringBuilder를 이용해서 결과를 출력하는 것이 성능면에서 좋다.
참고
'💻개발 > JAVA' 카테고리의 다른 글
split(".") 예상결과가 나오지 않는 이유 (0) | 2024.02.17 |
---|---|
리터럴 (0) | 2023.06.23 |
int와 Integer (0) | 2023.06.22 |
숫자에 _(언더바) (0) | 2023.06.22 |