문자열의 리스트가 주어졌을 때 이 문자열들을 하나로 이어붙이려고 한다.
이떄의 수행 시간은 어떻게 되는가?
문제를 간단히 하기 위해 모든 문자열의 길이를 x라 하자.
같은 n개의 문자열이 주어졌다고 가정해보자.
문자열을 이어붙일 때마다 두 개의 문자열을 읽어 들인 뒤 문자를 하나하나 새로운 문자열에 복사해야 한다.
처음에는 x개, 두 번쨰는 2x개, 세 번째는 3x개 n번 쨰는 nx개의 문자열을 복사해야 한다.
따라서 총 수행 시간은 O(x + 2x + 3x + ... + nx)
즉, O(xn^2)이 된다.
StringBuilder는 이 문제를 해결해 줄 수 있다.
StringBuilder는 단순하게 가변 크기 배열을 사용하여 필요한 경우에만 문자열을 복사하게끔 해준다.
문자열, 배열, 일반적인 자료구조를 연습해 보는 가장 좋은 방법은
자신만의 StringBuilder, HashTable, ArrayList를 구현해보는것이다.
'월별 & 주간 목표 혹은 느낀점 > 면접 예상 질문' 카테고리의 다른 글
면접 예상 문제 코테 문제 - 문자열의 중복이 없는가 (1) | 2025.06.20 |
---|---|
C#과 친해지기 위한 공부 방법 (0) | 2025.05.15 |
C/C++ 스마트 포인터 간단 정리 (2) | 2025.01.20 |