Java 5

다익스트라(Dijkstra) [Python][Java]

[WEEK03] 다익스트라 알고리즘다익스트라 알고리즘 (Dijkstra Algorithm)다익스트라 알고리즘은 하나의 시작 정점(source)에서 다른 모든 정점까지의 최단 경로를 구하는 알고리즘이다.그래프 내 모든 간선의 가중치가 0 또는 양수munsik22.tistory.com 파이썬으로 다익스트라 알고리즘 구현하기위와 같은 그래프를 노드 1부터 시작해서 최단 거리를 구하는 다익스트라 알고리즘을 구현하면 다음과 같다.import heapqdef dijkstra(arr, start): D = [float("inf")] * (n+1) D[start] = 0 queue = [(0, start)] while queue:munsik22.tistory.com이미 여러 번 다익스트라에 대해 다뤘지만 까먹은 관계..

CS/알고리즘 2026.08.19

[Java]Comparable과 Comparator

Java에서 Comparable과 Comparator는 객체를 정렬하거나 비교할 때 주로 사용하는 인터페이스이다. 둘 다 "두 객체의 순서를 비교한다"는 목적은 같지만, 비교 기준을 어디에 정의하느냐가 다르다.🧩 ComparableComparable은 객체 자신이 기본 정렬 기준을 갖도록 만드는 인터페이스다. 클래스가 Comparable를 구현하고 compareTo()를 오버라이드한다.public interface Comparable { int compareTo(T other);} compare()는 다음 규칙으로 값을 반환한다.음수: 현재 객체가 비교 대상보다 작음0: 두 객체가 같음양수: 현재 객체가 비교 대상보다 큼아래 예시는 나이를 기준으로 오름차순/내림차순 정렬하는 것이다.class Pe..

CS/Java 2026.08.01

[Java]Lambda 와 Stream

Java의 Lambda와 Stream은 Java 8에서 도입된 기능으로, 컬렉션 데이터를 더 간결하고 선언적으로 처리하도록 도와준다.🧩 LambdaLambda는 익명 함수를 간단히 표현하는 문법이다./* 기존 익명 클래스 방식 */Runnable runnable = new Runnable() { @Override public void run() { System.out.println("실행"); }};/* Lambda 방식 */Runnable runnable = () -> System.out.println("실행"); 람다식에서 ()는 매개변수, -> 뒤는 실행할 코드이다.Lambda 기본 문법(매개변수) -> { 실행문 }// 매개변수 없음() -> System.out.pr..

CS/Java 2026.07.31

[Java]Generics

🧩 Generics란? ArrayList, LinkedList와 같은 Collections를 사용할 때 이런 형태들을 많이 봤을 것이다.Queue queue = new LinkedList(); 이렇게 괄호 안에 사용 타입을 명시하는 것을 Generics라고 한다. 인터페이스 및 메서드를 정의할 때 타입(클래스 또는 인터페이스)을 매개변수로 사용할 수 있도록 한다.Generics를 쓰는 이유컴파일 타임에 더욱 강력한 타입 검사 가능 (안정성)형 변환 제거 가능 (편의성)코드 재사용성 향상// Generics를 사용하지 않은 경우 (형 변환 필요)List list = new ArrayList();list.add("hello");String str = (String) list.get(0);// Generi..

CS/Java 2026.07.26

Java로 멀티 쓰레드 찍먹하기

멀티 쓰레드란? 멀티쓰레드(Multi Thread)는 하나의 프로세스 내에서 둘 이상의 쓰레드가 동시에 작업을 수행하는 것을 의미한다. 비슷한 개념으로 멀티 프로세스(Multi Process)는 여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것을 의미한다. 멀티 쓰레드와 멀티 프로세스 모두 여러 흐름을 동시에 수행하다는 공통점을 가지고 있다. 하지만 멀티 프로세스는 각 프로세스가 독립적인 메모리를 가지고 별도로 실행되는 반면, 멀티 쓰레드는 각 쓰레드가 자신이 속한 프로세스의 메모리를 공유한다는 점이 다르다. 멀티 쓰레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유하므로, 시스템 자원의 낭비가 적다. 하나의 쓰레드가 작업을 할 때 다른 쓰레드가 별도의 작업을 할 수 있어 사용자 경험..

CS/Java 2026.02.21