CodingTest/java (6) 썸네일형 리스트형 코딩테스트를 위한 자료구조 (3) — Stack / Queue 한 줄 요약: 스택도 큐도 ArrayDeque 하나로 다 된다. 우선순위가 필요하면 PriorityQueue. 옛날 Stack 클래스는 쓰지 말자.1. 스택과 큐, 뭐가 다른가둘 다 "한쪽으로 넣고 한쪽으로 빼는" 자료구조인데, 빼는 순서가 다르다.Stack (스택): LIFO — 나중에 넣은 걸 먼저 뺀다. (접시 쌓기)Queue (큐): FIFO — 먼저 넣은 걸 먼저 뺀다. (줄 서기)언제 떠올리나?되돌아가야 하는 구조 → 스택 (괄호 짝 맞추기, 뒤로가기, DFS, 수식 계산)먼저 온 순서대로 처리 → 큐 (BFS, 순서 보장 작업 처리)2. ArrayDeque — 스택도 큐도 이것 하나로Deque(덱, 양쪽 다 넣고 뺄 수 있는 자료구조)를 구현한 클래스. 스택으로도 큐로도 쓸 수 있고 둘 다 .. 코딩테스트를 위한 자료구조 (2) — 정렬 (Arrays.sort / Collections.sort) 한 줄 요약: 원시 타입 배열이면 Arrays.sort(), 객체 배열이나 리스트면 Collections.sort() 또는 List.sort(). 순서를 바꾸고 싶으면 Comparator.1. 정렬은 "전처리"다정렬 자체가 답인 문제는 드물다. 대신 정렬을 해두면 그다음 로직이 쉬워지는 경우가 많다.정렬해두면 투 포인터를 쓸 수 있다정렬해두면 이분 탐색을 쓸 수 있다정렬해두면 그리디의 기준을 잡을 수 있다 (예: 마감 시간 순, 크기 순)정렬해두면 인접한 것만 비교하면 되니 중복·최솟값 차이 등을 쉽게 구한다즉, "이걸 정렬하면 문제가 단순해지나?"를 항상 떠올려보는 게 핵심이다.2. 정렬 알고리즘 이론 — 어떤 정렬들이 있나코테에서 직접 구현할 일은 거의 없지만, 표준 정렬이 내부에서 뭘 쓰는지 알아야.. 코딩테스트를 위한 자료구조 (1) — HashMap / HashSet 한 줄 요약: "빠르게 찾고 싶다"면 Hash 계열. 값이 필요하면 HashMap, 있는지 없는지만 중요하면 HashSet.1. 왜 쓰는가배열이나 리스트에서 특정 값을 찾으려면 처음부터 끝까지 훑어야 한다(O(n)). 데이터가 10만 개면 탐색 한 번에 10만 번. 이걸 반복문 안에서 하면 O(n²)이 되어 시간 초과가 난다.Hash 계열은 평균 O(1) 로 조회·삽입·삭제를 한다. "특정 값이 있는지", "이 키에 해당하는 값이 뭔지"를 즉시 알 수 있다. 코딩테스트에서 시간 초과를 피하는 가장 흔한 무기다.2. HashMap — 키로 값을 찾는다키(key) → 값(value) 매핑. 키는 중복 불가, 값은 중복 가능.Map map = new HashMap();map.put("apple", 3); .. 절댓값을 구할 때 - Math.abs() int a = 3, b = 2; 일 때| b - a | 의 값을 구하려면Math.abs(b-a); Map에서 키(또는 값)가 포함되어있는지 찾을 때 - containsKey() / containsValue() Map map = new HashMap();이 map에 키,값을 담고담은 데이터가 존재하는지 확인하고 싶을 때 사용true / false 로 반환 키의 여부 확인map.containsKey(key); 키의 값 여부 확인map.containsValue(value); 각 요소(변수)를 한번에 List로 넣으려 할 때 - Arrays.asList() int a = 1, b = 2, c = 3; 일 때해당 변수들을 한번에 List에 넣으려면List list = Arrays.asList(a, b, c); ⚠️ 주의 ⚠️Arrays.asList()를 사용해서 만든 List는add 또는 remove 불가java.lang.UnsupportedOperationException 발생set 은 가능 이전 1 다음