![[백준 17472번] 다리 만들기 2 - 그래프 탐색, 최소 신장 트리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdoOIK%2FbtsIF1JLbSh%2FMtutc2DxPHY3Bz5X3gMI3K%2Fimg.png)
문제 난이도GOLD I (링크) 문제 풀이각각의 독립된 섬들을 최단 거리로 연결하고 싶을 때, 놓을 수 있는 다리의 총 길이의 최소값을 구하는 문제.역시나 최소 신장 트리를 응용한 문제가 되겠다. 이번에는 각 간선을 구하는 것과 더불어, 이 섬이 어느 정점인지를 구하는 것도 필요하다. 결국엔 두 정점 사이의 간선을 구해서 문제를 풀어야하기 때문이다. 위의 그림처럼 문제에서 요한 3가지 올바르지 않은 방법과 함께, 추가로 두 가지만 주의한다면 쉽게 풀 수 있다. 처음 다른 섬을 만났을 때 만족하지 않는 조건이라면 바로 빠져나올 것.부끄럽게도 처음 코드를 완성시켰을 때, 다른 섬을 만났을 때, 종료 조건을 부족하게 작성하여 아래 그림처럼 더이상 탐색하지 못함에도 불구하고 탐색을 시켰다. Union..
![[백준 1774번, 백준 4386번] 우주선, 별자리 만들기 - 최소 신장 트리(MST)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzTaYO%2FbtsIFxHa92W%2FtQfWOBgjMmfmgPg4Iih5Mk%2Fimg.png)
문제 난이도GOLD III 1774번 풀이간선의 가중치가 주어지지 않아 간선의 가중치를 구하는 로직만 추가해준다면 쉽게 문제를 해결할 수 있다. 이 문제에서 간선의 가중치는 2차원에 있는 신들의 위치 사이의 거리를 구하는 것으로, 아래 공식처럼 유클리드 거리 계산 방법을 이용하면 쉽게 가중치를 구할 수 있다. 위 공식을 코드로 나타낸다면 아래와 같다. private static double calCost(int x1, int x2, int y1, int y2) { return Math.sqrt(Math.pow(x1 - y1, 2) + Math.pow(x2 - y2, 2));} 크루스칼(Kruskal) 알고리즘 (with. 백준 1197번 최소 스패닝 트리)크루스칼 알고리즘 (Kru..

크루스칼 알고리즘 (Kruskal Algorithm)크루스칼 알고리즘(Kruskal Algorithm)이란 최소 신장 트리(Minimum Spanning Tree)를 찾기 위해 사용되는 알고리즘이다. 신장 트리(Spanning Tree)그래프 내의 모든 정점을 포함하는 트리 최소 신장 트리(Minimum Spanning Tree)신장 트리 중에서 사용된 간선들의 가중치 합이 최소인 트리 최소 신장 트리를 찾기 위해 모든 간선을 가중치에 따라 오름차순으로 정렬하는 아이디어를 사용하여 효과적으로 MST를 구할 수 있게 된다.세부적인 구현 방법은 다음과 같다. 1. 모든 간선을 가중치에 따라 오름차순 정렬한다.2. 간선을 하나씩 선택하여 사이클이 생기지 않을 때 연결하여 모든 노드가 연결될 때 까지 반복한..
![[데이터베이스] 인덱스(index) 정리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8wCp6%2FbtsIwhDN3lg%2FSEEbrIf3PINoLRrEbJE5Rk%2Fimg.png)
인덱스 목차, 색인, 책갈피와 같은 기능을 하는 인덱스는, 데이터베이스 분야에서는 어떤 데이터를 검색할 때 속도를 높여주는 자료 구조로메모리 영역에 생성되는 일종의 책갈피이다. 인덱스 구조보통 Hash, B-Tree, B+Tree가 있다. Hash우리가 알고있는 Key, Value형태의 자료 구조다.해시 함수로 키 값을 해시값으로 변환하고, 이 해시 값을 기반으로 데이터를 빠르게 조회할 수 있다. - O(1) 하지만 이런 해시구조의 특성상 범위 검색에 효율이 떨어진다. 키 값이 조금이라도 변하게 되면 완전히 다른 해시 값을 반환하기 때문이다.범위 검색에서의 부등호 연산을 포함한 범위 조건(BETWEEN, LIKE 등)에는 적합하지 않다. B-TreeB-Tree는 이진 트리를 확장한 트리 ..

안녕하세요!! 블로그에 처음으로 존대로 포스팅을 진행해볼까 합니다. 요약 1. 인프콘 이벤트(링크)를 참조하셔서, MY 인프콘 페이지(링크)를 SNS, 블로그 등에 공유하세요. 2. 공유 게시물의 링크를 이벤트 페이지의 댓글에 남기기 아래는 제 인프콘 공유 페이지입니다. https://www.inflearn.com/conf/infcon-2024/share?year=2024&id=1170588&hash=diehreo%40228eccce&name=mag1c 인프콘 2024 - MY페이지친구의 인프콘 MY페이지를 둘러보고 인프콘 참가신청 하세요!www.inflearn.com 올해도 어김없이 인프콘이 개최되는데요, 인프콘은 역시 여름에 해야 제맛인 것 같아요 (?) 작년에는 유튜브를 통해 인프콘을 복습했다면, ..

graphQL에 대해 알아보자 - 1 (with NestJS, typeORM)학습을 위해 생성한 예제 코드는 깃헙에 있습니다.(링크) graphQLgraphQL은 기존 데이터로 쿼리를 실행하기 위한 API를 위한 쿼리 언어이자 런타임이다. 클라이언트가 필요한 것만 정확히 요청할mag1c.tistory.com N + 1이전 글의 예제에서 Post를 가져오는데에 Post와 Comments는 1:N 관계를 가진다.이 관계에서 comments를 조회할 때 comment가 lazy loding되어 N + 1 문제가 발생할 수 있다. //lazy loadingasync findAll(authorId?: number): Promise { if (authorId) return await this.postRep..

어제 향로님의 실물을 영접(?)할 수 있는 기회가 있었다. 현재 고민들을 안고 있는 상황에서 개발자이자 인생 선배로서 향로님은 이 혼란함을 어떻게 해결했을까 궁금했다.공유해주시는 경험으로 길을 찾을 수 있지 않을까 하는 기대에 얼른 신청하게 되었다. 개발자분들과 함께했던 3시간, 향로님과 함께했던 2시간 동안 감정이 위아래로 요동치며 많은 것들이 정리되고, 또 새로운 고민거리를 안겨주었다. 어떤 고민이 있었고, 어떤 새로운 숙제가 생겼는지 지금 아니면 이 감정들이 조금 희석될 것 같아 정리가 덜 된 채로 책상에 앉았다. 참석하기 전에 나의 고민들은 개인적으로 잘 해나가고 있는지와 이직을 해야할지에 대한 고민이었다. 재직 중인 회사에서 내 가치가 있는지서비스와 내가 성장을 가파르게 할 수 있을지한 ..

GitHub - mag123c/nest-graphQLContribute to mag123c/nest-graphQL development by creating an account on GitHub.github.com graphQLgraphQL은 기존 데이터로 쿼리를 실행하기 위한 API를 위한 쿼리 언어이자 런타임이다. 클라이언트가 필요한 것만 정확히 요청할 수 있게 해준다. 공식 문서의 설명을 읽어보면 자세한 특징을 서술해두었고, 읽어보면 공통적으로 나오는 키워드들은 빠르다, 단일 요청, 쿼리와 타입 정도가 있다. 또한 공식 문서 내의 포스팅 중 REST와 비교한 글이 있었는데, "graphQL은 REST와 크게 다르지 않지만, API를 구축하고 소비하는 개발자 경험에 큰 차이를 만드는 작은 몇가지의 변..