목록2025/10 (9)
공부가 싫은 개발자
🧵 문자열 처리✅ StringBuilder문자열을 반복해서 더할 때 + 대신 사용 → 성능 훨씬 좋음 (String은 매번 새 객체 생성)StringBuilder sb = new StringBuilder();sb.append("Hello");sb.append("World");sb.toString(); // "HelloWorld"sb.reverse(); // 문자열 뒤집기sb.deleteCharAt(i); // i번째 문자 삭제메서드설명append(str)문자열 추가insert(index, str)특정 위치에 삽입delete(start, end)부분 삭제reverse()문자열 뒤집기toString()최종 문자열 반환 ✅ StringString s = "a,b,c";String[] arr = s.spli..
✅ 기본 개념자동 정렬되는 큐기본은 최솟값 우선 (오름차순)poll() 시 가장 작은 값부터 꺼냄내부적으로 힙(heap) 구조 사용1. 선언과 초기화PriorityQueue pq = new PriorityQueue(); // 오름차순 (최솟값 우선)PriorityQueue maxPq = new PriorityQueue(Collections.reverseOrder()); // 내림차순 (최댓값 우선) 2. 요소 추가pq.offer(5);pq.offer(2);pq.offer(8); 3. 요소 제거 + 반환int val = pq.poll(); // 가장 작은 값 꺼냄 4. 요소 조회int peek = pq.peek(); // 가장 작은 값 확인 (제거 X) 5. 크기 확인pq.size(); 6. 전체 순회순회..
✅ 기본 개념후입선출 (LIFO) 구조DFS, 괄호 검사, 백트래킹, 재귀 시뮬레이션에 자주 사용Stack 클래스 또는 Deque로 구현 가능 1. 선언과 초기화Stack stack = new Stack(); 2. 요소 추가stack.push(10); 3. 요소 제거stack.pop(); // 제거 + 반환 4. 요소 조회stack.peek(); // 맨 위 요소 확인 (제거 X) 5. 전체 순회for (int num : stack) { System.out.println(num);} 6. 크기 확인stack.size(); 7. 코딩테스트에서 자주 쓰이는 상황상황활용 예시DFS 탐색stack.push(node)괄호 검사push / pop 으로 짝 맞추기백트래킹상태 저장 후 복원 💡Deque로 대체하..
✅ 기본 개념선입선출 (FIFO) 구조BFS, 시뮬레이션, 순서 처리에 자주 사용대표 구현체: LinkedList, ArrayDeque 1. 선언과 초기화Queue queue = new LinkedList(); 2. 요소 추가queue.offer(10); // 추가 (null 반환 가능)queue.add(20); // 추가 (예외 발생 가능) 3. 요소 제거queue.poll(); // 제거 + 반환 (비어있으면 null)queue.remove(); // 제거 + 반환 (비어있으면 예외) 4. 요소 조회queue.peek(); // 맨 앞 요소 확인 (제거 X) 5. 전체 순회for (int num : queue) { System.out.println(num);} 6. 크기 확인queue.siz..
✅ 기본 개념Set은 중복을 허용하지 않는 자료구조순서가 없고, 빠른 검색이 가능대표 구현체: HashSet, TreeSet, LinkedHashSet 1. 선언과 초기화Set set = new HashSet(); 2. 요소 추가set.add(10);set.add(10); // 중복 → 무시됨 3. 요소 삭제set.remove(10); 4. 존재 여부 확인set.contains(10); // true/false 5. 전체 순회for (int num : set) { System.out.println(num);} 6. 크기 확인set.size(); 7. 초기화set.clear(); 8. 리스트 ↔ 셋 변환List list = Arrays.asList(1, 2, 2, 3);Set set = new Has..
✅기본 개념Map: 키(Key)와 값(Value) 쌍으로 구성된 자료구조HashMap: 가장 많이 쓰이는 Map 구현체 (순서 보장 안 됨, 빠른 검색 가능)TreeMap: 키 기준 정렬됨LinkedHashMap: 입력 순서 유지 1. 선언과 초기화Map map = new HashMap(); 2. 값 추가 및 수정map.put("apple", 3); // 추가map.put("apple", 5); // 수정 (키 중복 시 덮어씀) 3. 값 조회int count = map.get("apple"); // 5map.getOrDefault("banana", 0); // 키 없으면 기본값 반환 4. 키/값 존재 여부 확인map.containsKey("apple"); // truemap.containsValue(5)..
1. 오름차순 정렬List list = Arrays.asList(5, 2, 9);Collections.sort(list); // [2, 5, 9] 2. 내림차순 정렬Collections.sort(list, Collections.reverseOrder()); // [9, 5, 2] 3. 리스트 뒤집기Collections.reverse(list); // [9, 5, 2] → [2, 5, 9] 4. 최댓값과 최솟값int max = Collections.max(list); // 9int min = Collections.min(list); // 2 5. 빈도리스트에서 특정 값이 몇 번 등장했는지 확인int count = Collections.frequency(list, 5); // 1 6. 리스트 전체를 특정 값..
1. 선언과 초기화List list = new ArrayList(); 2. 요소 추가list.add(10); // 맨 뒤에 추가list.add(1, 20); // 인덱스 1에 삽입 3. 요소 삭제list.remove(2); // 인덱스 2의 요소 삭제list.remove(Integer.valueOf(10)); // 값 10 삭제 4. 요소 접근int val = list.get(0); // 첫 번째 요소 5. 리스트 크기int size = list.size(); 6. 정렬Collections.sort(list); // 오름차순Collections.sort(list, Collections.reverseOrder()); // 내림차순 7. 뒤집기Collections.reverse(list); 8. 검색list..
1. 배열은 고정 크기배열은 크기 변경 불가크기를 유동적으로 바꾸고 싶다면 ArrayList 사용 2. 기본값 자동 초기화int[] → 0boolean[] → falseString[] → null 3. 정렬Arrays.sort(arr)내림차순은 Integer[]로 변환 후 Collections.reverseOrder() 사용Integer[] arr = {5, 2, 9};Arrays.sort(arr, Collections.reverseOrder()); 4. 복사와 슬라이싱Arrays.copyOf(): 앞에서부터 원하는 길이만큼 복사Arrays.copyOfRange(arr, from, to): 슬라이싱(from, 포함, to 미포함) 5. 출력Arrays.toString(arr)System.out.prin..