저는 Java위주로 공부를 했기 때문에 코딩테스트에 응시할 경우를 대비 해 정리한 자료입니다.
자주 사용되지만 한동안 사용하지 않으면 잊어버리는 내용들이 많아 정리를 하게 되었습니다.
1. 입출력 최적화
🔹 BufferedReader & BufferedWriter (빠른 입출력)
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine(); // 한 줄 입력
bw.write(input + "\n"); // 한 줄 출력
bw.flush(); // 버퍼 비우기
br.close();
bw.close();
}
}
✅ Scanner보다 빠르며, 대량 데이터를 다룰 때 유용
🔹 StringBuilder (문자열 연산 최적화)
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" World");
System.out.println(sb.toString()); // "Hello World"
}
}
✅ 문자열 연산이 많을 경우 + 대신 StringBuilder 사용!
2. 자료구조 활용
🔹 ArrayList (동적 배열)
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.remove(0); // 첫 번째 요소 제거
System.out.println(list.get(0)); // 20
}
}
✅ 배열보다 유동적으로 사용 가능, 삽입/삭제가 많다면 LinkedList 고려
🔹 HashMap & HashSet (빠른 검색)
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
System.out.println(map.get("a")); // 1
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
System.out.println(set.contains(1)); // true
}
}
✅ 빠른 검색이 필요하면 HashMap/HashSet 활용!
🔹 PriorityQueue (우선순위 큐, 힙 정렬)
import java.util.*;
public class Main {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<>(); // 최소 힙
pq.add(3);
pq.add(1);
pq.add(2);
System.out.println(pq.poll()); // 1 (최소값 먼저 나옴)
}
}
✅ 최소값/최대값을 빠르게 뽑아야 할 때 유용
'코테' 카테고리의 다른 글
[알고리즘]투 포인터(Two Pointer) 알고리즘 - 백준 2018(수들의 합 5) (0) | 2025.04.15 |
---|---|
[코딩 테스트] 문자열 메소드 정리(String,StringBuilder) (0) | 2025.04.09 |