코테

[코딩 테스트] Java 필수 문법 정리 – 입출력, 자료구조

kchs0529 2025. 3. 24. 10:11

저는 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 (최소값 먼저 나옴)
    }
}

최소값/최대값을 빠르게 뽑아야 할 때 유용