알고리즘에서 문자열과 배열
- 알고리즘의 입력 값은 문자열 혹은 배열로 들어오는 경우가 많다.
- 1차원 배열과 문자열은 보통 거의 동일한 구조를 가지고 있다.
- 언어마다 배열을 다루는 법은 매우 다르다.
- 자바스크립트의 경우, 배열이 매우 관대해서 크기도 늘었다 줄었다 하고 배열 내부 데이터 타입 제약도 없다.
- C 언어의 경우엔 크기가 고정이며, 동적으로 할당하고 싶다면 메모리 할당을 받아야 한다.
- 언어마다 문자열을 다루는 방법도 매우 다르다.
- C 는 가변이다.
- Python, Java 는 불변이다.
알고리즘에서 불변과 가변의 중요성
- 가변인 경우에는 일부만 문자를 변경할 수 있으므로 성능상 유리하다.
- 불변인 경우에는 일부의 문자를 변경하기 위해 새로운 문자열을 다시 만들어야 한다.
알고리즘 문제를 풀 때, 성능상의 차이가 생기게 된다.
그래서 자바와 같은 경우String
을 그대로 쓰기보다,StringBuilder
를 이용해 성능을 챙긴다.
일반적인 개발 시에는 불변 객체가 유리한 점이 많다.
반응형
'알고리즘 이론 > 배열과 문자열' 카테고리의 다른 글
Sliding Window, Maximum Average Subarray 문제 (leet code) (0) | 2022.12.18 |
---|---|
Sliding Window 기법 배워보기 (0) | 2022.12.18 |
Two Pointers, 정렬된 제곱의 배열 구하기 (squares of a sorted array) (0) | 2022.12.09 |
Two Pointers, O(n) 의 복잡도로 문자열 뒤집는 방법 (reverse string) (0) | 2022.12.09 |
알고리즘, Two Pointers 기법 (0) | 2022.12.07 |