반응형
배열
- 배열: 같은 자료형의 묶음. 크기가 고정
- ArrayList: 같은 자료형의 묶음 크기가 동적
더보기
배열
/* 1차원 배열 */
type[] arrName = new type[count]; // 배열 선언 및 0으로 초기화
type[] arrName = {value1, ...}; // 배열 선언 및 초기화
arrName[index]; // 배열값 조회
arrName.length; // 배열의 길이
Arrays.sort(arrName); // 배열의 데이터를 정렬
Arrays.toString(arrName); // 배열의 모든 데이터를 String으로 변환
/* 2차원 배열 */
type[][] arrName = new type[rows][columns]; // 배열 선언 및 0으로 초기화
type[][] arrName = {{value1, ...}, {value2, ...}, ...}; // 배열 선언 및 초기화
arrName[arr_index][column_index]; // 배열값 조회
ArrayList
ArrayList<ReferenceType> list = new ArrayList<>();
ArrayList<ReferenceType> list = new ArrayList<>(list);
list.add(value); // 리스트 맨뒤 값 추가
list.get(index); // 해당 인덱스의 값에 접근
list.remove(index); // 해당 인덱스의 값 삭제. O(N)
list.size(); // 데이터의 개수
list.isEmpty(); // 비어있는지 여부 확인
Collections.sort(list); // 정렬
예시
더보기
배열 정렬
public class Main {
private static int[] solution(int[] arr) {
int[] clone = arr.clone(); // 배열을 복사하여 새로운 배열 생성
Arrays.sort(clone); // 원본 배열 자체를 정렬
return clone;
}
public static void main(String[] args) {
int[] arr = {1, 7, 2, 8, 3};
int[] sortedArr = solution(arr);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(sortedArr));
}
}
배열 중복값 제거후 내림차순 정렬
- Arrays 클래스의 stream()은 stream으로 변환. stream의 Primitive Type인 IntStream의 데이터를 boxed()로 Integer로 변환하고 distinct()를 통해 중복 제거 후 Integer형 배열로 중복 제거된 데이터를 반환
- distinct()는 O(N)을 보장
import java.util.Arrays;
import java.util.Collections;
public class Main {
private static int[] solution(int[] arr) {
// 중복값 제거
Interger[] result = Arrays.stream(arr).boxed().distinct().toArray(Integer[]::new);
Arrays.sort(result, Collections.reverseOrder()); // 내림차순 정렬
// int형 배열로 변환
return Arrays.stream(result).mapToInt(Integer::intValue).toArray();
}
}
스택
- FILO(First In Last Out) 구조
더보기
import java.util.*;
/* Stack */
Stack<Integer> stack = new Stack<>();
stack.push(val); // 원소 삽입
stack.pop(); // 가장 최근에 삽입된 원소 반환 및 삭제
stack.peek(); // 가장 최근에 삽입된 원소
stack.isEmpty(); // 원소가 없다면 true 반환
stack.size(); // 원소 개수
큐
- FIFO(First In First Out) 구조
더보기
import java.util.*;
/* Queue */
Queue<String> q = new LinkedList<>();
q.offer(val); // 원소 삽입
q.poll(); // 가장 먼저 삽입된 원소 반환 및 삭제
q.peek(); // 가장 먼저 삽입된 원소
q.isEmpty() // 비어있다면 true 반환
q.size(); // 원소 개수
/* ETC */
q.add(val); // q.offer(val)와 비슷하지만 예외 발생
q.remove(); // q.poll()과 비슷하지만 예외 발생
q.element(); // q.peek()와 비슷하지만 예외 발생
덱
- FIFO + FILO 구조로 양방향으로 삽입/방출
더보기
import java.util.*;
/* Deque */
ArrayDeque<Character> dq = new ArrayDeque<>();
dq.offerFirst(val); // 맨 앞에 값 삽입
dq.offerLast(val); // 맨 뒤에 값 삽인
dq.pollFirst(); // 맨 앞의 값 반환 및 삭제
dq.pollLast(); // 맨 뒤의 값 반환 및 삭제
dq.peekFirst(); // 맨 앞의 값 반환
dq.peekLast(); // 맨 뒤의 값 반환
dq.isEmpty(); // 비어있다면 true 반환
dq.size(); // 원소 개수
dq.contains(val) // 해당 값 포함시 true 반환
/* ETC */
dq.addFirst(val); // dq.offerFirst()와 비슷하지만 예외 발생
dq.addLast(val); // dq.offerLast()와 비슷하지만 예외 발생
dq.removeFirst(); // dq.pollFirst()와 비슷하지만 예외 발생
dq.removeLsat(); // dq.pollLast()와 비슷하지만 예외 발생
dq.getFirst(); // dq.peekFirst()와 비슷하지만 예외 발생
dq.getLast(); // dq.peekLast()와 비슷하지만 예외 발생
해시
- Key와 Value 형태의 데이터 구조
더보기
import java.util.*;
/* HashMap */
HashMap<String, Integer> map = new HashMap<>();
map.put(key, val); // 키가 없다면 새로 생성하여 추가, 키가 존재한다면 값 수정
map.getOrDefault(key, defaultVal); // 키가 없다면 defaultVal 반환, 키가 존재한다면 해당 값 반환
map.remove(key); // 키값을 제거하고 value 반환
map.remove(key, val); // 키와 값을 제거하고 true 반환
map.containsKey(key); // key가 포함되어있다면 true 반환
map.contains.Value(val); // value가 포함되어 있다면 true
map.isEmpty(); // 비어있다면 true
map.size(); // 원소 개수
/* ETC */
map.get(key); // key에 해당하는 값 반환. key가 없는 경우 에러 발생
map.entrySet(); // Set 형태로 Entry 반환
map.keySet(); // 키값들을 Set으로 반환
map.values(); // collection 형태로 반환
집합
- 중복된 값이 없는 데이터 모음
더보기
import java.util.*;
/* Set */
HashSet<Integer> set = new HashSet<>();
set.add(val); // 값 추가
set.remove(val); // 값 제거
set.isEmpty(); // 비어있다면 true 반환
set.size(); // 원소 개수
set.contains(val); // 값 포함시 true 반환
/* ETC */
set.equals(set); // 동일한 set일 경우 true 반환
트리
-
그래프
-
반응형
'코딩테스트 > 코딩테스트(Java)' 카테고리의 다른 글
[코딩테스트] Java - 알고리즘 (0) | 2025.03.17 |
---|---|
[코딩테스트] Java - 자료구조 추천 문제 (2) | 2025.03.17 |
[코딩테스트] Java - 기본문법 (1) | 2025.03.17 |
[코딩테스트] LeetCode 입문 (0) | 2025.03.17 |
[코딩테스트] Softeer 입문 (1) | 2025.03.17 |