[BOJ 1197] 최소 스패닝 트리
·
Coding Test/Problem Solving
1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 1. 문제 설명 2. 구현 아이디어 1 - 맞았습니다!! 별다른 아아디어 없이, MST 알고리즘을 적용하면 풀 수 있는 문제이다. 최소 신장 트리(MST, Minimum Spanning Tree) - 크루스칼, 프림 알고리즘 1. 최소 신장 트리란? 신장 트리(Spanning Tree)란 그래프의 모든 노드가 사이클 없이 연결된 부분 그래프를 의미한다. 신장 트리는 여러 개가 존재할 수 있으며, 이 중 모든 노드가 ..
최소 신장 트리(MST, Minimum Spanning Tree) - 크루스칼, 프림 알고리즘
·
Coding Test/Algorithm & Data Structure
1. 최소 신장 트리란? 신장 트리(Spanning Tree)란 그래프의 모든 노드가 사이클 없이 연결된 부분 그래프를 의미한다. 신장 트리는 여러 개가 존재할 수 있으며, 이 중 모든 노드가 최소 간선의 합으로 연결되었을 때를 최소 신장 트리(MST, Minimum Spanning Tree)라고 한다. 최소 신장 트리를 찾을 수 있는 대표적인 알고리즘 2가지가 있는데, 크루스칼 알고리즘과 프림 알고리즘이다. 크루스칼은 간선 중심, 프림은 정점 중심 알고리즘이다. 정점 대비 간선이 적으면(Sparsh Graph) 크루스칼을, 많으면(Dense Graph) 프림을 사용하는 것이 좋다. 크루스칼 알고리즘의 시간복잡도: O(ElogE) 프림 알고리즘의 시간복잡도: O(VlogV+ElogV) 둘 다 음의 간선이..
[Packy] Swagger @ApiResponses를 커스텀 어노테이션으로 대체하기
·
Spring
1. @ApiResponses의 한계 Swagger에서 정상 응답값과 함께 에러 응답값도 명시해주어야 클라이언트 단에서도 에러 응답값에 대한 예외 처리를 할 수 있다. Swagger에서는 기본적으로 아래와 같이 @ApiResponses와 @ApiResponse 어노테이션을 사용할 수 있다. @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "로그인 성공"), @ApiResponse(responseCode = "400", description = "로그인 실패") }) 하지만 @ApiResponses를 사용하며 여러모로 불편함을 느꼈다. 1. responseCode, description을 수작업으로 적어주어야 한다. [Pac..
[Packy] Spring Boot로 유튜브 영상의 유효성 검사하기
·
Spring
1. 들어가며 이번에 만들고 있는 서비스에서 유튜브 영상을 임베드할 수 있는 기능을 제공한다. iOS에서 지금 사용하는 라이브러리에서는 유효하지 않은 빈 동영상 링크를 삽입해도 빈 동영상으로 나옴 유튜브 API 할당량을 아끼기 위해 URL 캐싱 위 두 가지 이유 때문에 유튜브 영상의 유효성 검사를 서버 단에서 진행하기로 결정하였다. 이번 포스트에서는 Youtube API를 연동하여 유튜브 영상의 정보를 가져오고 유효성을 검사하는 로직을 만들어보자. 2. 유효성 검증 로직에 대해 알아보자 1. 유튜브 URL에 정규 표현식을 사용하여 Video ID 추출 2. Video ID를 유튜브 API에게 전달하여 Video 정보를 가져옴 3. Embeddable, PrivacyStatus 여부를 확인하여 유효한 영상..
[Packy] Spring Boot에서 Presigned URL로 AWS S3에 파일 업로드하기
·
Spring
이번 포스트에서는 AWS S3 파일 업로드 방식 중 MultipartFile을 사용한 방식과 Presigned URL을 사용한 방식에 대해 알아보고, Presigned URL로 S3에 파일을 업로드하는 방식을 코드로 직접 구현해본다. 1. MultipartFile을 사용한 기존 S3 파일 업로드 Spring Boot에서 S3 파일 업로드를 구현할 때 가장 많이 사용하는 방법이 MultipartFile을 사용하는 방법이다. MultipartFile은 스피링에서 제공하는 인터페이스로, 파일 업로드를 손쉽게 다룰 수 있도록 기능을 제공한다. 클라이언트에서 파일을 업로드했을 때 WAS가 임시 디렉토리에 파일을 저장한다. 파일은 컨테이너가 실행되고 있는 서버 디스크에 저장되고, 요청 처리가 끝나면 임시 저장된 파..
[BOJ 14499] 주사위 굴리기
·
Coding Test/Problem Solving
1. 문제 설명 2. 구현 아이디어 1 - 맞았습니다!! 주사위의 면이 한 줄짜리면 쉬울텐데 ...! 십자가 모양이라서 주사위 각 면에 있는 수를 어떻게 저장할지 고민되었다. 일단 동서남북으로 굴렸을 때 주사위의 도면 변화를 그려봤다. 주사위의 각 면을 1차원 리스트로 관리할 때, 그림 아래 적은 것처럼 각 면에 적힌 숫자가 어느 면으로 가야할지 정할 수 있다. 그래서 dice라는 원본 리스트를 만들고, 구르는 방향에 따라 원소의 위치를 변경한 newDice 리스트를 만들어 명령마다 dice를 newDice로 갱신해주었다. 나머지는 문제에 나와있는 그대로 코드로 구현하면 된다. #include using namespace std; int n, m, x, y, k; int board[20][20]; vec..
짱정연
짱정연의 짱개발자 도전기