Java/알고리즘 3

[Java] 자바 알고리즘 풀 때 int vs long 언제 써야할까?

알고리즘 문제 풀다가 자바에서는 종종 int 를 쓰면 값이 이상하게 나오는 경우가 많다.파이썬은 숫자 범위 제한이 없어서 그냥 막 써도 괜찮은데, 자바는 자료형에 따라 범위가 정해져 있어서 조심해야함✔️ 기본 정수 자료형 범위자료형범위int약 ±21억long약 ±900경✔️ 자료형 선택 기준입력값의 최대 범위 확인하기배열 크기, 원소 값, 반복 횟수 등 다 확인단순히 값이 작아 보여도, 곱하거나 누적될 경우 주의곱셈, 누적합 등 중간 결과가 커지는 경우ex) 1_000_000 * 1_000_000 → 10^12 (int 넘음)이럴 땐 반드시 long 사용지수 연산이 있는 경우문제에서 "행렬 제곱", "A^B" 같이 나오는 경우반복적인 곱셈이 발생해서 수가 커질 수 있음✔️ 자주 하는 실수int a = 1..

Java/알고리즘 2025.03.23

자료구조 (ArrayList, HashMap, Stack, Queue, Deque)

🔹 1) 배열 (int[])int[] arr = new int[5]; // 크기 5인 배열int[] arr2 = {1, 2, 3, 4, 5}; // 배열 초기화 🔹 2) 리스트 (ArrayList)- 배열보다 크기 변경이 자유로움import java.util.ArrayList;ArrayList list = new ArrayList();list.add(10); // 추가list.add(20);System.out.println(list.get(0)); // 첫 번째 원소list.remove(0); // 첫 번째 원소 삭제System.out.println(list.size()); // 리스트 크기 🔹 3) 해시맵 (HashMap)- Key-Value 저장, 탐색이 빠름 (O(1))import java.u..

Java/알고리즘 2025.03.12

빠른 입력 (Scanner vs BufferedReader)

알고리즘 문제를 풀 때 입력 속도는 매우 중요하다. 특히, 입력 데이터가 많으면 Scanner와 BufferedReader 중 어떤 것을 사용하느냐에 따라 실행 시간이 크게 차이 나서 시간 초과가 날 수도 있다.📌 결론부터 말하면?→ Java는 기본적으로 입력이 느리기 때문에 BufferedReader를 쓰는 것이 좋다!→ 단순한 문제에서는 Scanner도 괜찮지만, 대부분의 경우 BufferedReader + StringTokenizer 조합을 추천한다. 입력 방법속도장점단점Scanner느림공백 및 개행을 기준으로 쉽게 입력을 분리할 수 있음내부적으로 정규 표현식 기반 파싱을 하기 때문에 속도가 느림BufferedReader빠름버퍼를 활용하여 대량의 데이터를 빠르게 읽을 수 있음입력을 문자열로만 받기..

Java/알고리즘 2025.03.12