본문 바로가기

전체 글

(56)
[SWEA] 3000. 중간값 구하기 (with JAVA) 문제 3000 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 중간값을 구하는 방법 중에서 우선순위 큐 (Priority Queue)를 사용해보겠습니다. 삽입할 때마다 중간값을 구하는 문제로, Heap 으로 구성된 Priority Queue 를 사용합니다. 시간 복잡도는 O(nlogn) 입니다. 중간값을 구하기 위해서는 아래와 같은 규칙을 따라야 합니다. 1. 제일 처음에는 최대 힙에 삽입 2. 최대 힙의 크기는 최소 힙의 크기와 같거나 하나 더 큼 3. 최대 힙의 최대 원소는 최소 힙의 최소 원소보다 작거나 같음. 즉, 최대 힙의 루트 노드
[SWEA] 4006. 고속도로 건설 2 (with JAVA) 문제 4006 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [ 접근 과정 ] 문제에서 이미 '최소 비용' 이라는 말이 나와있어서, 가중치를 계산하는 문제라는 것을 알 수 있었습니다. '최소 비용으로 모든 도시 간을 이동할 수 있게' 라는 부분에서 크루스칼 알고리즘을 사용하면 좋을 것 같다는 생각을 했습니다. 여기서의 간선은 도로이기 때문에 무향 그래프로 이해했고, 도로를 기준으로 최소 비용의 도로들을 선택해서 모든 도시를 이을 수 있어야 하기 때문에, 사이클이 없어야 하는 크루스칼 알고리즘으로 해결했습니다. 크루스칼 알고리즘을 공부하기에 앞서 서로소 집합을 트리로 표현하는 부분에 대해 먼저 알고 있어야 합니..
[SWEA] 1251. 하나로 (with JAVA) 문제 1251 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [ 접근 과정 ] 문제를 보면, 섬들 간의 거리를 간선의 가중치로 볼 수 있습니다. 가중치 하면 기본적으로 떠오르는 알고리즘이 다익스트라였기에 다익스트라 알고리즘을 이용해서 풀었습니다. 다만, 이전까지 다익스트라 알고리즘 기본 문제들을 풀었을 때는 간선들의 가중치가 주어졌었지만, 이번 문제는 가중치도 직접 구해야 했습니다. [ 고민했던 부분 ] 1. 각 섬들의 위치를 어떻게 저장할 것인가? 각 섬들의 위치를 저장할 때 ArrayList() 를 써야하나 고민했지만, 문제에 나온 x, y 의 범위를 고려했을 때 2차원 배열로 해도 충분할 것이라 생각해서..
[JAVA] 서로소 집합(Disjoint Sets)과 연산 최근 알고리즘 문제를 풀면서 최소 신장 트리 개념에 대해 공부하다가 알게 된 크루스칼 알고리즘에서 이용되는 서로소 집합과 연산에 대해 정리해보겠습니다. 일단, 서로소는 공통으로 포함하는 원소가 없는 두 집합의 관계입니다. 아래와 같이 A, B 집합이 있을 때, 두 집합에서 공통되는 원소가 없다면 'A와 B는 서로소이다' 라고 말할 수 있습니다. 서로소 집합에서 연산은 크게 3가지가 있습니다. [ Make-Set 연산 ] >> 자기 자신인 집합을 하나 만듭니다. 즉, 자기자신이 대표원소가 됩니다. 여기서 대표원소는 부모노드가 자기자신일 때입니다. 예를 들어, 0부터 5까지 Make-Set 연산을 하게 되면 아래 그림과 같습니다. Make-Set(0) ~ Make-Set(5) [ Union-Set 연산 ] ..
[Jenkins] 젠킨스를 이용한 스프링 부트 CI/CD (feat. EC2) 스프링 부트 서버를 EC2 서버를 사용하여 구축하고, 서버를 실행시킬 때마다 EC2 인스턴스에 접속하여 명령어를 입력해야 하는 것이 불편해서 젠킨스를 이용해서 스프링 부트 서버의 CI/CD 를 구축하려고 합니다. 이 글은 EC2 서버 구축이 모두 완료된 상태에서 진행합니다. EC2 서버 구축은 아래의 이전 포스팅을 참고해주세요 :) [AWS] AWS EC2 에 스프링 부트 프로젝트 배포하기 (feat. MySQL) 현재 스프링 부트 프로젝트를 하고 있는데, AWS EC2 에 배포하려고 합니다. AWS 에 계정을 만들어놓은 상태이고, 스프링 부트 프로젝트를 AWS 서버에 올려보겠습니다. 1. EC2 인스턴스 생성하기 1) EC2 jeinie-developer.tistory.com 1. 젠킨스 설치 현재 사..
[Spring Boot] AWS S3 로 이미지 업로드하기 AWS EC2 서버를 사용하면서 이미지 처리를 위해 AWS 에서 제공하는 S3 를 사용하려고 합니다. S3 (Simple, Storage, Service) 는 AWS 에서 제공하는 인터넷 스토리지 서비스입니다. 그럼 S3 버킷을 만들어보겠습니다. 1. S3 버킷 만들기 1) AWS 에 접속하여 S3 를 검색한 후, 아래와 같이 버킷 만들기 를 클릭합니다. 2) 아래 화면에서 버킷 이름과 리전을 입력합니다. 3) 객체 소유권은 그대로 두고, 퍼블릭 액세스 를 아래와 같이 설정해줍니다. '모든 퍼블릭 액세스 차단' 을 해제한 다음, ' 새 퍼블릭 버킷 또는 액세스 지점 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단' 을 선택해줍니다. 4) 버킷 버전 관리와 기본 암호화를 비활성화 로 선택해준 ..
[AWS] Failed to connect to service endpoint 에러 (feat. Spring Boot) 스프링부트에서 AWS S3 를 사용하기 위해 aws 에 사용하는 애플리케이션을 연동했는데 아래와 같은 에러가 발생했습니다. 위의 에러 발생 원인은 spring-cloud-starter-aws 의존성을 주입할 때, 로컬환경은 aws 환경이 아니기 때문에 발생하는 에러입니다. 에러를 해결하기 위해서 SpringBootApplication 에 적용시키면 됩니다. @SpringBootApplication( exclude = { org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration.class, org.springframework.cloud.aws.autoconfigure.context.ContextStackA..
[Spring Boot] Json 과 MultipartFile 한 번에 전달받는 API (feat. Postman) 커뮤니티 게시글을 등록하고 조회하는 API 를 개발하는 도중, 게시글에 업로드할 이미지에 대한 로직을 추가하는 과정에 대해 기록해보려고 합니다. 1. @RequestPart 게시글의 제목, 내용 등은 Json 형태로 서버로 보내주기 때문에 아래와 같이 @RequestBody 로 해주었습니다. 하지만 이미지 파일을 받아오려면 몇 가지 변경해야할 부분이 있습니다. @PostMapping("/post") public ResponseEntity createPost(@Valid @RequestBody ExchangePostDTO exchangePostDTO, BindingResult bindingResult, HttpServletRequest request) 이미지를 받아오기 위해 MultipartFile 을 추..