본문 바로가기

반응형

전체 글

(73)
문자열 뒤집기 - StringBuilder/StringBuffer , charAt() , char[] StringBuilder / StringBufferString str = "Hello";String reversed = new StringBuilder(str).reverse().toString(); // olleHStringBuilder: 단일 스레드 환경에서 빠릅니다.StringBuffer: 멀티스레드 환경(동기화 필요)에서 안전합니다. 반복문과 charAt()String str = "Hello";String reversed = "";for (int i = str.length() - 1; i >= 0; i--) { reversed += str.charAt(i);} char[]String str = "Hello";char[] charArray = str.toCharArray();int left ..
원하는 구간만 선택적으로 복사해서 새로운 배열 만들기 java 1.6 ~ 지정된 배열의 지정된 범위를 새 배열로 복사.Arrays.copyOfRange(T[] original, int from, int to) original - 범위를 복사할 대상 배열from - 복사할 범위의 첫 번째 인덱스(포함)to - 복사할 범위의 마지막 인덱스(배열 제외). (이 인덱스는 배열 외부에 있을 수 있습니다.) 원래 배열에서 지정된 범위를 포함하는 새 배열을 생성하며필요한 길이를 얻기 위해 원래 배열의 일부를 잘라내거나 0으로 채움.
if문 + map.containsKey() 대신 더 편한 방법 java 1.8 ~default V merge(K key, V value, BiFunction remappingFunction) key - 결과 값과 연결될 키value - 키와 연결된 기존 값과 병합될 null이 아닌 값 또는 키와 연결된 기존 값이나 null 값이 없는 경우 해당 키와 연결될 값remappingFunction - 값이 존재할 경우 값을 다시 계산하는 함수 지정된 키와 연결된 새 값 또는 해당 키와 연결된 값이 없는 경우 null을 반환. key가 없거나 value가 null→ 새 value 그냥 넣기 key가 있고 기존 value도 있음→ 기존값 + 새값을 함수에 넣음→ 함수 결과가 값이면 그 값으로 교체→ 함수 결과가 null이면..
코딩테스트를 위한 자료구조 (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);

반응형