java
| topics | 600-알고리즘 & 코딩테스트 |
| types | 레퍼런스 |
자주 사용하는 코딩테스트 문법 정리
https://earthteacher.tistory.com/169#gsc.tab=0import java.util.*;
자바의 자료형 종류
기본 자료형 (Primitive Type)
자바에서 가장 기본이 되는 자료형으로, 메모리 크기와 값의 범위가 정해져 있습니다1.
레퍼 클래스
- int → Integer
- double → Double
- char → Character
| 자료형 | 의미 | 크기 | 예시 |
|---|---|---|---|
| byte | 정수 | 1 byte | byte b = 1; |
| short | 정수 | 2 bytes | short s = 2; |
| int | 정수 | 4 bytes | int i = 3; |
| long | 정수 | 8 bytes | long l = 4L; |
| float | 실수 | 4 bytes | float f = 1.2f; |
| double | 실수 | 8 bytes | double d = 2.3; |
| char | 문자 | 2 bytes | char c = 'A'; |
| boolean | 논리값(true/false) | 1 bit | boolean flag = true; |
참조 자료형 (Reference Type)
객체의 주소를 저장하는 자료형으로, 대표적으로 다음과 같습니다1.
- String
- 배열(Array)
- 클래스(Class)
- 인터페이스(Interface)
- 열거형(Enum)
입출력
import java.io.*;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a = br.readLine().strip();
System.out.println(h+m+s);
형변환
int i = Integer.parseInt("123"); // 문자열 → int
double d = Double.parseDouble("3.14"); // 문자열 → double
Integer.toString(num);
String s1 = String.valueOf(123); // int → 문자열
String s2 = Double.toString(3.14); // double → 문자열
char c = 'A';
int code = (int) c; // 문자 → 정수
System.out.println(code); // 65
int i = 66;
char ch = (char) i; // 정수 → 문자
System.out.println(ch); // 'B'
문자열 찾기
String str = "hello Java!";
System.out.println(str.contains("J")); // true
System.out.println(str.contains("java")); // false (대소문자 구분)
String str = "hello Java!";
System.out.println(str.indexOf("J")); // 6 (포함되어 있음)
System.out.println(str.indexOf("z")); // -1 (포함되어 있지 않음)
String str = "hello Java!";
System.out.println(str.contains("J")); // true
System.out.println(str.contains("java")); // false (대소문자 구분)
String str = "hello Java!";
System.out.println(str.indexOf("J")); // 6 (포함되어 있음)
System.out.println(str.indexOf("z")); // -1 (포함되어 있지 않음)
배열
걍 list쓰셈
list 안에는 참조형 잇어야함( 기본형인건 래퍼클래스를 쓰샘)
| 구분 | Array (배열) | List (리스트, ArrayList 등) |
|---|---|---|
| 크기 | 고정 (생성 시 결정, 변경 불가) | 가변 (요소 추가/삭제로 크기 자동 조절) |
| 메모리 | 연속적인 메모리 공간에 저장 | 비연속적 메모리 공간(링크드 리스트 등) 또는 내부적으로 동적 배열 사용 |
| 속도 | 접근 속도가 빠름 (인덱스 기반, O(1)) | 접근 속도는 배열과 유사하나, 삽입/삭제가 더 빠름(특히 LinkedList) |
| 삽입/삭제 | 중간 삽입/삭제 시 모든 요소 이동 필요, 비효율적 | 중간 삽입/삭제가 상대적으로 효율적 |
| 자료형 | 기본형 및 참조형 모두 저장 가능 | 참조형(객체)만 저장 가능 (기본형은 래퍼클래스 필요) |
| 사용법 | arr[인덱스], arr.length | list.get(인덱스), list.size(), add(), remove() |
| 용도 | 크기가 변하지 않는 데이터 집합에 적합 | 크기가 자주 변하거나 동적 데이터 관리에 적합 |
import java.util.Arrays;
import java.util.List;
List<String> list = Arrays.asList("A", "B", "C");
List<String> list = new ArrayList<>();
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
Set<Integer> set = new HashSet<>(Arrays.asList(1, 2, 3));
List<String> list = new ArrayList<>() {{
add("a");
add("b");
}};
Map<String, Integer> map = new HashMap<>() {{
put("key1", 1);
put("key2", 2);
}};
for (String s : arr) {
list.add(s);
}
list.add("사과"); // 맨 끝에 추가
list.add(1, "바나나"); // 1번 인덱스에 삽입, 기존 값들은 뒤로 밀림
int len = list.size(); // 리스트 길이 반환
list.clear(); // 리스트 비우기
list.remove(0); // 0번 인덱스 값 삭제
list.remove("바나나"); // "바나나"라는 값 삭제 (처음 발견되는 값만)
list.set(1, "딸기"); // 1번 인덱스 값을 "딸기"로 변경
String fruit = list.get(0); // 0번 인덱스 값 반환
List<String> sub = list.subList(1, 3); // 1번~2번 인덱스 값 반환(3은 미포함)
String result = String.join("-", list); // 조인
// 리스트 자료형 변환
for (String s : strList) { intList.add(Integer.parseInt(s)); }
List<Integer> intList = strList.stream() .map(Integer::parseInt) .collect(Collectors.toList());
// 정렬
Arrays.sort(fruits);
Collections.sort(cars); //list의경우
index 에러
int[] arr = {1, 2, 3};
try {
System.out.println(arr[5]); // 인덱스 에러 발생
} catch (ArrayIndexOutOfBoundsException e) {
// pass: 아무 처리도 하지 않음
}
System.out.println("다음 코드 실행"); // 정상적으로 실행됨
배열 인자로넘길때 주의사항
check(park, limit, {i, j}); // ❌ 컴파일 에러!
check(park, limit, new int[]{i, j}); // ✅ 올바른 방법
SET
Set<int[]> set1 = new HashSet<>();
int[] arr1 = {1, 2};
int[] arr2 = {1, 2};
set1.add(arr1);
set1.add(arr2);
System.out.println(set1.size()); // 2
Set<List<Integer>> set2 = new HashSet<>();
List<Integer> a = Arrays.asList(1, 2);
List<Integer> b = Arrays.asList(1, 2);
set2.add(a);
set2.add(b);
System.out.println(set2.size()); // 1
String[] arr = set.toArray(new String[0]);
System.out.println(arr[0]);
- `set.toArray(new 타입)` → 원하는 타입의 배열로 변환 (실무에서 권장)
스택 큐
스택
- **
java.util.Stack - 주요 메서드:
push(E item): 스택에 값 넣기pop(): 스택에서 값 꺼내기(제거)peek(): 스택 최상단 값 확인(제거하지 않음)isEmpty(): 비었는지 확인
import java.util.Stack;
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(stack.pop()); // 3
System.out.println(stack.peek()); // 2
System.out.println(stack.isEmpty()); // false
큐
java.util.Queue인터페이스와LinkedList또는ArrayDeque구현체를- 주요 메서드:
offer(E e): 큐에 값 넣기(뒤에 추가)poll(): 큐에서 값 꺼내기(앞에서 제거)peek(): 큐 맨 앞 값 확인(제거하지 않음)isEmpty(): 비었는지 확인
import java.util.Queue;
import java.util.LinkedList;
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
System.out.println(queue.poll()); // 1
System.out.println(queue.peek()); // 2
System.out.println(queue.isEmpty()); // false