![[java] 백준 1976번 문제(여행 가자)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE7H3c%2FbtsNLRAXd7k%2FQVxtdMo1AFVvMcQk7HXEkK%2Fimg.png)
원본 링크 : https://www.acmicpc.net/problem/1976문제설명 소스코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Boj_1976{ static int[] parent; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); // 도시 수 ..
![[java] 백준 1717번 문제(집합의 표현)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDFk0g%2FbtsNKv6uP6J%2FfigbriGOTMWfUI67KdkAOK%2Fimg.png)
원본 링크 : https://www.acmicpc.net/problem/1717문제설명 소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Boj_1717{ static int[] parent; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new ..
![[java] 유니온 파인드(Union-Find)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczgRRd%2FbtsNMS6KCY6%2FRofamxyjMoYMgUk1Kl5sO1%2Fimg.png)
이 글은 Do it! 알고리즘 코딩 테스트 - 자바편을 개인적으로 공부하고 정리하는 글임을 알립니다.유니온 파인드유니온 파인드는 여러 개의 원소들이 어떤 그룹(집합)에 속해 있는지를 빠르게 확인하고, 서로 다른 그룹을 하나로 합치기 위해 사용하는 자료구조이다.예를 들어 친구 관계, 네트워크 연결, 그래프의 사이클 여부처럼 ‘서로 연결되어 있는지 아닌지’를 효율적으로 판별해야 하는 문제에서 매우 빠른 속도로 연산할 수 있기 때문에 자주 사용된다. 유니온 파인드는 일반적으로 여러 노드가 있을 때 특정 2개의 노드를 연결해 1개의 집합으로 묶는 union 연산과 두 노드가 같은 집합에 속해있는지를 확인하는 find 연산으로 구성되어있는 알고리즘이다. union 연산 : 여러 노드가 있을 때 특정 2개의 노드를..
![[Spring Boot 핵심 원리와 활용] 외부 설정](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpyMD5%2FbtsNJH6QG2Z%2FCwf46n6h6XtCLmF13hXkl0%2Fimg.png)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.외부 설정이란 애플리케이션을 실행할 때 필요한 설정값을 외부에서 불러와서 전달하는 것을 의미한다.외부 설정은 일반적으로 다음 4가지 방법이 있다.OS 환경 변수: OS에서 지원하는 외부 설정, 해당 OS를 사용하는 모든 프로세스에서 사용자바 시스템 속성: 자바에서 지원하는 외부 설정, 해당 JVM안에서 사용자바 커맨드 라인 인수: 커맨드 라인에서 전달하는 외부 설정, 실행시 main(args) 메서드에서 사용외부 파일(설정 데이터): 프로그램에서 외부 파일을 직접 읽어서 사용 스프링 통합커맨드 라인 옵션 인수, 자바 시스템 속성, OS 환경변수는 모두 외부 설정을 key=value 형식으로 사용할 수 있는 방법..
![[Spring Boot 핵심 원리와 활용] 자동 구성 라이브러리 제작 및 사용](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwSsvf%2FbtsNIM8HBg6%2FOjAQl7EpaaA2gmBs3KJaZK%2Fimg.png)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. package memory;import org.springframework.boot.autoconfigure.AutoConfiguration;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;import org.springframework.context.annotation.Bean;@AutoConfiguration@ConditionalOnProperty(name = "memory", havingValue = "on")public class MemoryAutoConfig { @Bean public MemoryCon..
![[AWS] 고가용성 인프라 구축](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLogjg%2FbtsNIwYp288%2Fy3JXMVkN1caNGdrqXLRxR0%2Fimg.png)
이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.가용성(Availability)이란 시스템이 서비스를 정상적으로 제공할 수 있는 가능성을 의미한다.서비스에 장애가 발생할 가능성이 극히 작은 시스템을 가용성이 높은(고가용성) 시스템이라고 말할 수 있다. 반대로 서비스가 다운되는 시간이 긴 시스템을 가용성이 낮은 시스템이라고 한다. 가용성을 높이기 위해서는 서비스 사용 불가능 시간을 최대한 발생시키지 않게 하고 설령 발생하더라도 그 시간을 짧게 만들어야 한다. 다운 타임을 줄이는 데 가장 중요한 설계 방법 중 하나가 시스템 이중화이다. 이 글에서 최종 구축하는 인프라 아키텍쳐는 아래와 같다.VPC에 가용 영역을 2개로 설정하고, 각 가용 영역에 퍼블릭, 프라이빗 ..
![[AWS] VPC(Virtual Private Cloud)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu0v6O%2FbtsNHg1xdZv%2Fl7pkFTNz5GdOOmDzFI26N0%2Fimg.png)
이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.VPC의 개념VPC를 쓰는데 여러가지 이유가 있지만, 핵심적인 이유는 딱 한가지 보안 때문이다.VPC란 가상의 네트워크 공간을 의미한다. VPC를 활용하면 외부에서 직접 접근할 수 없는 독립적인 네트워크 환경을 구성할 수 있어서, 보안적으로 안전하게 리소스(EC2, RDS 등)를 사용할 수 있다. 예를 들어, EC2 인스턴스 2대가 있다고 가정하자. 그런데 1대의 인스턴스는 인터넷에 자유롭게 접근하면서 사용하고 싶고, 나머지 1대는 좀 더 안전하고 비공개로 사용하고 싶을 수 있다. 이럴 때 VPC를 활용하면 된다. VPC는 가상의 네트워크 공간이다.따라서 네트워크 공간의 크기를 정해야한다.AWS에서 EC2, RDS..
![[AWS] AWS 글로벌 인프라](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcE8M0u%2FbtsNHrVYCLF%2FoLSDDIPiROFNDXRXiNf7Kk%2Fimg.png)
IaaS, PaaS, SaaS, 온프레미스 온프레미스(On-Premise)모든 것을 직접 구축하고 운영하는 방식이다.서버, 네트워크, 운영체제, 애플리케이션까지 모두 내가 책임지고 관리해야 한다. IaaS (Infrastructure as a Service)인프라(서버, 스토리지, 네트워크, 가상화)만 빌려쓰는 방식이다.OS부터 애플리케이션까지는 내가 직접 설치하고 관리해야 한다.대표 예: AWS EC2, Azure VM, GCP Compute Engine PaaS (Platform as a Service)운영체제, 미들웨어, 런타임 환경까지 제공해주며, 개발자는 데이터와 애플리케이션만 올리면 되는 방식이다.대표 예: Heroku, AWS Elastic Beanstalk, Google App Engine..