본문 바로가기

반응형

전체 글

(68)
[Algorithm] 다익스트라(dijkstra) 알고리즘 다익스트라 알고리즘 다익스트라 알고리즘은, 모든 간선의 weight가 0이상 일 때 사용가능한 알고리즘으로, 특정 vertex를 출발점으로 하여 모든 vertex까지의 최소 거리를 구하는 알고리즘입니다. 알고리즘의 동작 원리는, "매 단계마다, 도달할 수 있는 정점 중에서 시작점으로부터 거리가 가장 가까운 정점을 확정해 나가는 방식입니다. weight가 작은 노드부터 계속 가지고와야 하다보니, 다익스트라 알고리즘은 일반적으로 PriorityQueue를 사용하여 구현합니다. 최솟값을 가진 노드를 찾기 위해 일반 배열의 경우 복잡도가 O(n)이지만, PriorityQueue의 경우에는 O(log n)입니다. 구현 - 노드 정의 package baek1753; import java.io.BufferedRead..
[JAVA] 제네릭 타입 제네릭 타입이란 제네릭 타입은 Java에서 타입 안정성(type safety)과 재사용성(reusability)을 높이기 위해 도입된 기능입니다. 제네릭은 클래스, 인터페이스, 메서드 등에서 타입을 파라미터화하여 여러 종류의 실제 타입을 지원하는 일반화된 코드를 작성할 수 있게 합니다. 일반적으로 제네릭은 "" 기호를 사용하여 선언됩니다. 이 기호 안에 타입 파라미터가 위치하며, 해당 파라미터는 실제 사용할 타입으로 대체됩니다. 제네릭 타입을 사용하면 컴파일러는 타입 체크를 수행하고 컴파일 시에 타입 안정성을 보장할 수 있습니다. 제네릭 타입의 주요 이점은 다음과 같습니다 1. 타입 안정성(Type Safety): 제네릭은 컴파일 시에 타입 체크를 수행하므로 런타임에 타입 관련 오류가 발생할 확률을 줄여..
[Algorithm/Concept] Dynamic Programming 공부 자료 바킹독 블로그 [실전 알고리즘] 0x10강 - 다이나믹 프로그래밍 다이나믹 프로그래밍(Dynamic Programming, DP) 여러 개의 하위 문제를 푼 후, 그 결과를 쌓아올려 주어진 문제를 해결하는 알고리즘 문제를 해결하기 위한 점화식을 찾아낸 후, 점화식의 항을 밑에서부터 차례로 구해나가서 답을 알아내는 형태의 알고리즘 가장 유명한 예: 피보나치 수열 DP를 푸는 과정 테이블 정의하기 점화식 찾기 초기값 정하기 BOJ 1463번: 1로 만들기 import java.util.Scanner; public class Main { static int d[]; public static void main(String[] args) throws Exception { Scanner sc = new ..
[JAVA] 정적 변수와 정적 메서드 Java에는 static 키워드를 통해 정적 변수와 메서드를 선언합니다. public class Printer { private static final Printer INSTANCE = new Printer(); // 정적 변수 private Printer() { ... } public static Printer getInstance() { return INSTANCE; } // 정적 메서드 public void print() { ... } } 정적 변수 == 클래스 변수 [Java] 변수 종류에서 다루었던 클래스 변수 내용과 같습니다. 정적 메서드 인스턴스 생성 없이 클래스로 호출이 가능합니다. 여러 인스턴스들의 데이터와 관계없이 동일한 로직을 사용해야 할 때 정의를 해줍니다. 주의사항 정적 메서드에서..
[JAVA] 변수 종류 Java에는 3 종류의 변수가 존재합니다. 클래스 변수: 멤버 변수 중 static 키워드가 사용된 변수 인스턴스 변수: 멤버 변수 중 static 키워드가 사용되지 않은 변수 지역 변수: 멤버 변수를 제외한 모든 변수 public class Student{ String name; // 인스턴스 변수 static School school; // 클래스 변수 void goSchool(){ int velocity; // 지역 변수 ... } } 변수의 종류에 따라 생성되는 시기가 다릅니다.
[Effective JAVA] 1장. 들어가기 기본 원칙 이 책의 규칙 대부분은 아주 핵심적인 기본 원칙 몇 개에서 파생된다. 바로 명료성(clarity)과 단순성(simplicity)이다. 컴포넌트는 사용자를 놀라게 해서는 안된다. 코드는 복사가 아니라 재사용되어야 한다. 컴포넌트 사이의 의존성은 최소로 유지해야 한다. 오류는 만들어지자마자 가능한 한 빨리 (되도록 컴파일타임에) 잡아야 한다. 용어 컴포넌트: 개별 메서드부터 여러 패키지로 이루어진 복잡한 프레임워크까지 재사용 가능한 모든 소프트웨어 요소 공개 API, API: 프로그래머가 클래스, 인터페이스, 패키지를 통해 접근할 수 있는 모든 클래스, 인터페이스, 생성자, 멤버, 직렬화된 형태를 말한다. 대략적으로 얘기하면, 패키지의 공개 API는 그 패키지의 모든 public 클래스와 인터페이..
[AWS] RDS MySQL WorkBench 연결 시 unable to connect to localhost 에러 발생 문제 AWS에서 RDS로 DB를 생성한 뒤, 로컬 환경의 workbench로 연결하고자 했습니다. 그러나 아래와 같이 db에 연결을 실패했습니다. 연결 시도 방법은 u-nij님의 포스트를 참고해서 진행했습니다. RDS 인스턴스의 퍼블릭 액세스는 허용으로 되어있었고, 오타 문제도 아니었습니다. 그래서 구글링을 한 결과, hyeonae님의 포스트에서 정답을 얻었습니다. 원인 연결이 되지 않았던 원인은 서브넷이 private으로 설정되어 있었기 때문입니다. 해결 방법 해결 방법은 간단합니다. 우선, RDS 인스턴스 정보에서 사용하고 있는 서브넷의 정보를 확인합니다. 그 후에 VPC -> 라우팅 테이블 -> 이전에 확인한 서브넷을 가지고 있는 라우팅 테이블 클릭 -> 라우팅 편집 -> 대상을 0.0.0.0/0 ..
[AWS] VPC 이해하기 다루는 내용 AWS를 사용하기 위해 필수적으로 이해가 필요한 Virtual Private Cloud (VPC)와 관련된 개념들을 다루었습니다. VPC, Amazon VPC Subnet, Amazon VPC의 Subnet Routing Table Internet Gateway Regions Availability Zones CIDR 들어가기에 앞서 아래의 다이어그램은 VPC의 예시입니다. VPC에는 리전의 각 가용성 영역에 하나의 서브넷이 있고, 각 서브넷에 EC2 인스턴스가 있고, VPC의 리소스와 인터넷 간의 통신을 허용하는 인터넷 게이트웨이가 있습니다. 이 다이어그램에 나온 개념들에 대해 하나씩 정리해 보도록 하겠습니다. VPC (Virtual Private Cloud) VPC 정의 가상 개인 클라우..

반응형