java 9

(코테) [Java] 그래프 만들기

전제 파악 먼저질문 예시인 1 3, 2 6은 아래 중 어떤 걸 의미할 수 있음문제에서 보면 한번 갔다가 다시 돌아오는 경우나 한번만 가고 끝나는 경우가 있을 수 있음그래서 문제를 어떻게 풀어야하는지 잘 확인해 보아야함해석의미 예시방향 없음 (무방향 그래프)1 — 3, 2 — 6친구 관계, 양방향 도로방향 있음 (단방향 그래프)1 → 3, 2 → 6트리, 네트워크 흐름, 의존성방향 + 가중치 있음1 → 3 (가중치 w)다익스트라, 벨만포드방향 + 시간 / 비용 / 거리2 → 6 (시간 5초)백준 10282 해킹 문제 대표적인 그래프 표현 방식 2가지1. 인접 리스트 (Adjacency List) ⭐ 가장 많이 씀정점 수가 많고 간선 수가 적을 때 유리 (희소 그래프)구현이 간결하고 공간 효율 좋음List[..

코테 2025.06.05

(코테) [Java] BFS

BFS란?Breadth-First Search, 너비 우선 탐색은 루트 노드에서 시작해서 가까운 노드부터 탐색하는 방식임큐(Queue) 자료구조를 사용해 구현함DFS가 깊이부터 들어가는 반면, BFS는 넓게 퍼지듯이 탐색BFS 동작 원리시작 노드를 큐에 삽입하고 방문 처리큐에서 노드를 꺼낸 뒤, 인접한 노드들을 모두 큐에 넣고 방문 처리큐가 빌 때까지 반복BFS 기본 구조 (Java)void bfs(int start) { Queue queue = new LinkedList(); visited[start] = true; queue.offer(start); while (!queue.isEmpty()) { int current = queue.poll(); for ..

코테 2025.05.21

(코테) [Java] DFS

DFS란?Depth-First Search, 깊이 우선 탐색은 하나의 경로를 끝까지 탐색한 후 다시 돌아와서 다른 경로를 탐색하는 방식!그래프 탐색에서 많이 사용되며, 스택 또는 재귀 호출로 구현됨특히 트리나 그래프에서 모든 노드나 경로를 탐색해야 하는 문제에 적합함DFS의 동작 원리현재 노드를 방문 처리인접한 노드 중 아직 방문하지 않은 노드를 재귀적으로 방문더 이상 갈 곳이 없으면 이전 노드로 되돌아감 (Backtracking)DFS 기본 구조 (재귀)void dfs(int node) { visited[node] = true; for (int next : graph[node]) { if (!visited[next]) { dfs(next); } ..

코테 2025.05.20

(코테) [Java] 재귀

재귀란?함수가 자기 자신을 다시 호출하는 프로그래밍 기법복잡한 문제를 같은 구조의 더 작은 문제로 나눠서 푸는 방식이며종료 조건을 통해 반복을 마무리함으로써 최종 결과를 만들어내는 방법DFS할 때 사용 많이 했었음!재귀 함수의 구조void recursive() { // 1. 종료 조건 (Base Case) if (조건) return; // 2. 재귀 호출 (작은 문제로 분할) recursive();}예제 1: 1부터 N까지 출력public class Main { public static void printNumbers(int n) { if (n == 0) return; // 종료 조건 printNumbers(n - 1); //..

코테 2025.05.20

(코테) [Java] Deque

📚 Deque (덱) - 양쪽에서 삽입/삭제 가능한 자료구조"Queue의 확장판, 양방향 큐"✅ 개념 요약*Deque (Double-Ended Queue)**는 앞/뒤 모두에서 삽입과 삭제가 가능한 큐양방향 입출력 지원기본 연산:addFirst(x) / offerFirst(x) : 앞에 삽입addLast(x) / offerLast(x) : 뒤에 삽입pollFirst() / removeFirst() : 앞에서 제거pollLast() / removeLast() : 뒤에서 제거peekFirst() / peekLast() : 앞/뒤 값 조회Java 코드 예시import java.util.Deque;import java.util.LinkedList;public class DequeExample { publ..

코테 2025.05.15

(코테) [Java] Queue

📚 Queue (큐) - 선입선출의 대표 자료구조"줄을 선 순서대로 처리되는 구조"개념 요약Queue는 FIFO(First In, First Out) 구조먼저 들어온 데이터가 먼저 나가는 구조대표 연산:offer(x): 큐의 끝에 데이터 추가poll(): 가장 앞에 있는 데이터 제거 후 반환peek(): 가장 앞에 있는 데이터 확인isEmpty(): 비었는지 확인Java 코드 예시import java.util.LinkedList;import java.util.Queue;public class QueueExample { public static void main(String[] args) { Queue queue = new LinkedList(); queue.offer(10..

코테 2025.05.15

(코테) [Java] Stack

📚 Stack (스택) - 후입선출의 대표 자료구조"쌓아올린 접시에서 위에 있는 걸 먼저 꺼내는 구조" 개념 요약Stack은 LIFO(Last In, First Out) 구조.가장 나중에 들어온 데이터가 가장 먼저 나감.기본 연산:push(x): x를 스택에 넣는다pop(): 스택의 top을 제거하고 반환peek() 또는 top(): 가장 위에 있는 값을 반환isEmpty(): 스택이 비었는지 확인Java 코드 예시import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { Stack stack = new Stack(); Bu..

코테 2025.05.15

(코테) [Java] 형변환

valueOf() 하나로 대부분의 형변환을 해결할 수 있음객체(Wrapper 클래스)로 다룰 거면 valueOf(), 기본형(int, double)이 필요하면 parseXxx()문자 → 숫자 : parseInt(), parseDouble(), parseFloat(), valueOf 사용숫자 → 문자 : String.valueOf(), toString() 사용정수 ↔ 실수 : (int), (double), (float) 캐스팅완전 짱 큰 숫자!이건 신기해서 찾았음그냥 이런게 있구나~ 생각만 하면 괜찮을 듯 하네욤BigIntegerimport java.math.BigInteger;public class Solution { public static void solution(String input) { ..

코테 2025.05.13

(코테) [Java] 배열 생성

1. 정적 배열 (Static Array)크기가 고정된 배열을 선언할 때 사용한 번 크기를 설정하면 변경 불가능new 키워드를 사용하여 배열을 생성(1) 배열 선언 & 초기화// 1️⃣ 선언 후 값 할당int[] arr = new int[5]; // 길이가 5인 배열 생성 (기본값 0)// 2️⃣ 선언과 동시에 초기화int[] arr2 = {1, 2, 3, 4, 5};// 3️⃣ new 키워드를 사용한 초기화int[] arr3 = new int[]{10, 20, 30, 40, 50};// 4️⃣ 다른 자료형 배열String[] names = {"Alice", "Bob", "Charlie"};double[] decimals = {1.1, 2.2, 3.3};- 배열은 한 번 생성하면 크기 변경 불가능- ne..

코테 2025.05.13