항해99 취업 리부트 코스/TIL
[항해99 취업 리부트 코스 학습일지] 3주차 TIL(1)
봄의 개발자
2024. 4. 3. 23:49
728x90
반응형
새로운 조로 배정되었다. 기술 매니저님도 새로운 분이 오셨다. 조금 어색함이 있었지만 함께 배우고 공부하려는 마음으로 모인 만큼 다같이 잘 해내고 싶다는 생각이 들었다! 나도 누군가에게 인사이트를 받고 반대로 내가 누군가에게 인사이트를 줄 수 있는 한 주가 될 수 있으면 좋겠다!
- 오늘 진행된 강의에서 학습한 내용은 무엇인가요?
스택, 큐, Deque
- 이번 주 진행된 팀 스터디에서 얻은 인사이트는 무엇인가요?
- for문 조건식에 연산 넣지 않기! -> 시간 초과 유발 가능성있음
- Deque의 구현체인 LinkedList와 ArrayDeque의 차이점
- LinkedList
- 구현: LinkedList는 List 인터페이스와 Deque 인터페이스를 모두 구현합니다. 이는 LinkedList가 순서를 유지하는 동시에 양방향 큐의 기능을 제공한다는 것을 의미합니다.
- 성능: 각 요소는 이전 및 다음 요소에 대한 참조를 포함하므로 추가 및 삭제 작업에서 좋은 성능을 보입니다. 그러나 인덱스를 통한 접근은 O(n)의 시간 복잡도를 가집니다.
- 구현: ArrayDeque는 Deque 인터페이스의 구현체로, Queue의 하위 클래스입니다. 이는 ArrayDeque가 양방향 큐의 기능을 제공하지만, List 인터페이스는 구현하지 않는다는 것을 의미합니다 .
- 성능: ArrayDeque는 내부적으로 동적 배열을 사용하여 요소를 저장합니다. 이는 인덱스를 통한 접근이 빠르며, 앞뒤 양쪽에서의 추가 및 삭제 작업이 매우 효율적입니다. 또한, LinkedList에 비해 메모리 사용량이 적습니다.
- LinkedList, ArrayDeque 주요 차이점
- 인터페이스 구현: LinkedList는 List와 Deque 인터페이스를 모두 구현하는 반면, ArrayDeque는 Deque 인터페이스만 구현합니다.
- 내부 구조: LinkedList는 연결된 노드의 리스트로 구성되어 있으며, ArrayDeque는 동적 배열을 사용합니다.
- 성능: LinkedList는 요소의 추가 및 삭제에 유리하지만, 인덱스를 통한 접근은 느립니다. ArrayDeque는 양쪽 끝에서의 작업이 매우 빠르며, 메모리 효율성도 더 높습니다.
- LinkedList
- StringBulider 중간에 추가하는 거 가독성이 없을 수도 있다.
- 출력과 문제 풀이 로직을 따로 분리하는 게 가독성에는 좋다.
- StringTokenizer과 split() 차이점
- StringTokenizer는 내부적으로 문자열을 복사하지 않고 원본 문자열에 인덱스를 사용해서 메모리 사용량이 상대적으로 적다. 구분자로 단순 문자만 가능하다는 단점이 있다.
- String.split()은 내부적으로 정규 표현식을 사용해서 단순 구분자를 사용하는 StringTokenizer 보다 느릴 수 있고, 결과로 문자열 배열을 생성해서 공간 복잡도 측면에서도 StringTokenizer보다 못하다.
- 그러나 정규 표현식을 구분자로 사용하거나 결과로 배열을 반환받아 즉시 처리하는 경우에는 split() 써야 한다.
728x90
반응형