전체 글 116

[자료구조] 분리 집합, Union-Find에 대해서 알아보자!

분리집합(Union-Find)은 그래프 알고리즘 중 하나로 코딩 테스트 킬러 문제로 주로 나오는 알고리즘입니다. 서로소 집합일단 유니온 파인드 알고리즘을 알기 전 disjoint sets을 먼저 이해해야 하는데요, 쉽게 설명하면 공통 원소가 없는 두 집합을 뜻합니다. 아래 그림을 보시면 왼쪽은 서로소 집합을 나타내고 오른쪽은 공통된 7이라는 원소 때문에 서로소 관계가 깨지게 됩니다. 따라서 왼쪽은 서로소 집합, 오른쪽은 서로소 집합이 아니게 되는 것이죠. Union-Find는 서로소 집합 자료구조를 만들 수 있습니다. 집합에서 노드들을 합치고(Union), 부모를 찾아(Find) 서로소 집합을 찾아내는 알고리즘인 것이죠. 한마디로 DSU(Disjoint Sets Union) 자료구조를 만들어 내는 과정..

공부/CS 공부 2023.02.03

[BE] 서버에서 갑자기 오류를 내뿜는다..

23년도 1월 30일, 매일 잘 쓰고 있던 동아리 와카타임 서버가 메인 화면 제외 전부 먹통이 되어버렸다. https://jongung.tistory.com/287 [node.js] Mega Waka Board 백엔드 제작기학기 중에 Node.js 공부를 하던 도중, 학교 개발 동아리 Megabrain에서 각 동아리원들 코딩 실태 조사(?) 느낌으로 도입했던 Wakatime이라는 서비스가 있었다. wakatime은 개발 시간 측정 서비스로 각 개발jongung.tistory.comhttps://jongung.tistory.com/288 [React] Mega Waka Board 프론트 제작기학교 개발 동아리 Megabrain에서 각 동아리원들 코딩 실태 조사 느낌으로 도입했던 Wakatime이라는 서비스..

[자료구조] 힙 자료구조인 heapq에 대해 알아보자!

힙의 개념힙은 완전 이진트리로 구성된 자료구조이다.우선순위 큐를 위해 만들어진 자료구조이다.힙 자료구조로 우선순위 큐를 구현할 때 삽입 삭제 모두 O(logN) 연산을 가진다.최소 힙: 부모 노드의 값이 자식노드의 값보다 항상 작은 힙최대 힙: 부모 노드의 값이 자식노드의 값보다 항상 큰 힙위 사진과 같이 항상 완전 이진트리로 구성되어 최소 최대 값을 빠르게 찾아낼 수 있도록 설계되어있다. heapq 모듈파이썬에선 heapq 모듈을 이용하여 최소 힙과 최대 힙 모두 구현할 수 있다. heapq 메서드heappush(heap, item)힙 불변성을 유지하면서 item 값을 heap으로 푸쉬한다.heapq.heappop(heap)힙 불변성을 유지하면서, heap에서 가장 작은 항목을 pop 하고 반환해 ..

공부/CS 공부 2023.01.26

[SW마에스트로] 14기 대비 코딩테스트 문제 유형 정리 (11기, 12기, 13기)

소프트웨어 마에스트로 14기 준비하면서 찾아본 코딩 테스트 문제 유형 정보 정리공식적인 정보가 아닌 타 블로그에서 발췌해 온 정보입니다. 14기부터는 WEB 유형 문제가 사라지고 알고리즘 유형과 SQL 유형으로만 평가하게 됩니다.대부분 블로그 후기에선 1차는 실버 상위 문제가 다수이고, 2차에선 골드 문제(분리 집합, 다이내믹 프로그래밍) 또는 실버 문제(구현, 탐색)로 구성되게 됩니다. 알고리즘 문제유형 정리자료구조구현완전탐색 (Brute-Force)이분탐색 (Binary Search)조합, 순열정렬라인 스위핑그래프 탐색 (DFS, BFS)분리 집합 (Union-Find)다이나믹 프로그래밍 (DP) SQL 문제유형 정리ANDORBETWEEN ANDGROUP BYDATEDIFFJOIN 13기 1차 코..

[React] Mega Waka Board 프론트 제작기

학교 개발 동아리 Megabrain에서 각 동아리원들 코딩 실태 조사 느낌으로 도입했던 Wakatime이라는 서비스가 있었다. wakatime은 개발 시간 측정 서비스로 각 개발 ide 플러그인으로 구현되어 있다. 모든 동아리원이 플러그인을 적용하여 매주 얼마나 개발을 했는지 확인 용도로 서비스를 사용하고 있었다. 매주 불편하게 디스코드 스레드를 열고, 캡처 후 업로드하는 방식이 불편했던 나는 Wakatime에서 제공하는 API를 가지고 express를 사용하여 백엔드를 구축하고 React로 프론트를 간단하게 구축하였다. 백엔드 제작기는 아래 글을 참고하면 된다. https://www.jongung.com/287 [node.js] Mega Waka Board 백엔드 제작기 학기 중에 Node.js 공부를..

[BE] Mega Waka Board 백엔드 제작기

학기 중에 Node.js 공부를 하던 도중, 학교 개발 동아리 Megabrain에서 각 동아리원들 코딩 실태 조사(?) 느낌으로 도입했던 Wakatime이라는 서비스가 있었다. wakatime은 개발 시간 측정 서비스로 각 개발 ide 플러그인으로 구현 되어있다. 모든 동아리원이 플러그인을 적용하여 매주 얼마나 개발을 했는지 확인 용도로 서비스를 사용하고 있었다.매주 불편하게 discord에 캡쳐하고, 업로드하는 방식이 불편했던 나는 Wakatime에서 제공하는 API를 가져와 우리만의 WakaTime LeaderBoard를 만들어 보자! 생각하여 Wakatime API를 살펴보았다.https://wakatime.com/developers해당 사이트에서 API Docs를 읽은 후 바로 개발을 시작하였다...

[자료구조] 파이썬 자료구조의 꽃 deque에 대해 알아보자!

최근 알고리즘 테스트 공부를 위해서 파이썬을 꽤나 자주 이용하는데, 문제에서 빈번하게 사용되는 deque에 대해서 알아봅시다! Deque, 왜 쓰나요?먼저 주 언어가 Javascript였던 제가, 파이썬으로 알고리즘을 하게 된 가장 큰 이유가 바로 deque의 유무였습니다. 자바스크립트에서 후입선출 방식의 Queue나 양쪽에서 삽입 삭제가 가능한 Double-ended Queue 같은 자료구조를 구현하기 위해선, 링크드리스트를 거의 필수로 사용해야 했습니다. 예를 들어 1, 2, 3이 있는 배열을 큐 방식으로 넣고 뺀다고 생각해 봅시다.1, 2, 3에서 가장 먼저 들어왔던 1의 값만 뺀다고 생각 해봅시다. 그럼 1을 빼기 위해서, 뒤에 있는 모든 index들이 한 칸 앞으로 와야 하는 귀찮은 일이 발생합..

공부/CS 공부 2023.01.17

[알고리즘] DFS와 BFS

알고리즘 공부를 하는 중에 그래프 탐색 파트를 공부하기 시작해서 짚고 넘어가는 것이 좋겠다고 생각하여 DFS와 BFS를 알아보고, 파이썬으로 구현까지 해본다. DFS (Depth-First Search)깊이 우선 탐색이라고 부르고 그래프에서 깊은 부분을 우선 탐색하는 알고리즘이다.갈 수 있는 한 맨 밑까지 탐색하여 리프노드(맨 아래 노드)를 방문하고, 이전 갈림길에서 선택하지 않은 노드들을 방문하는 식으로 탐색한다.방문 위치를 기록 하는 스택을 이용하여 해결 할 수 있다.또는 재귀로 해결 할 수 있다.스택 방식 동작 과정탐색 시작 노드를 스택에 삽입하고 방문 배열에 방문 했다고 표시한다.스택의 최상단 노드에 방문 하지 않은 인접 노드가 있으면 해당 노드를 스택에 넣고 방문 처리를 한다.만약 방문하지 않은..

공부/CS 공부 2023.01.11