💻개발/JAVA

알고리즘) Stringbuilder 왜 사용할까?

i_zzy 2024. 1. 11. 23:45

알고리즘을 푸는데 결과를 출력할 때 나는 보통 아래와 같이 풀었다. 

for(int i=0; i< N; i++){
            System.out.println(arr[i]);
        }

 

그런데 문제에서 시간 초과가 났다. 

 

찾아보니 정렬 알고리즘을 제외하고도 저 출력문에도 문제가 있다는 것을 알게 되었다. 

 

다른 사람들 풀이를 찾아보니 출력을 할 때, StringBuilder를 사용해서 풀었다.

그런데 나는 똑같이 for문을 사용하는데 왜 단순 print문은 안 되고, StringBuilder는 되는 걸까?에 대한 의문을 가지게 되었다. 

 

그 이유는 println을 사용하여 출력할 때마다 새로운 라인을 생성하고 출력하는 동작을 수행하는데, 이 과정에서 불필요한 라인 생성 및 출력 작업이 발생하기 때문이다.

그렇기 때문에 연산면에서 많은 시간과 자원을 사용하게 되어 속도가 떨어질 수밖에 없다. 

 

반면에 StringBuilder를 사용하면, 주소 하나에 값만 수정해서 문자열 조작이 한 번에 이루어지고 한 번만 출력하면서 성능이 향상되게 되는 것이다. 

버퍼라고 하는 독립적인 공간에 문자열 추가 가능
공간 낭비x, 문자열 연산 속도가 빠르다. 

 

그리고 단어를 이어붙일 때 역시 print문에서 '+'를 이용하여 문자를 합쳐주기 보다는 StringBuilder를 이용해서 결과를 출력하는 것이 성능면에서 좋다. 

 

 

 

참고

https://mygumi.tistory.com/83

 

StringBuilder vs System.out.println :: 마이구미

이번 글의 제목은 "StringBuilder vs System.out.println" 이다.글의 목적은 알고리즘 문제들의 시간을 줄이는 것이다.그렇다면 어떻게 줄일 수 있는지 천천히 살펴보자. 대부분 알고 있듯이 System.out.println

mygumi.tistory.com