전체 글136 Union-Find 알고리즘을 케이크처럼 쉽게 이해하는법 Union-Find Union-Find 알고리즘은 다수의 노드로 트리를 만들 때 사용된다. 각 노드들을 병합해서 트리로 만드는 것이 Union 노드가 병합될 수 있는지를 확인하는것이 Find라서 Union-Find이다. 1. 노드로 트리 만들기 1부터 5까지의 노드가 있다고 하고 이 노드들로 트리를 만든다고 해보자 [노드] 우선 1과 2를 병합(연결) 할 수 있다 [1, 2 병합] 다음으로는 3과 4, 5를 병합해본다 [3과 4, 5 병합] 여기에 1과 3을 병합할 수 도 있다. [1-3 병합] 각각 연결된 노드가 있는 1과 3을 병합해도 트리가 되는 데는 문제가 없다. 그러나 2와 4는 병합할 수 없다 [병합 불가 경우] 왜냐하면 노드 2와 4는 같은 트리 내에 있는 노드이기 때문이다. 따라서 이 두 .. 2023. 2. 7. Reids를 사용한 Cache 전략 Redis를 사용한 Cache 전략 프로젝트 진행 중 개발을 하다 보니 자주 조회되지만 변하지 않는 값들이 보였다. 같은 값인데 조회될 때마다 RDB를 거쳐야 하는 것은 확실히 비효율적이다. 따라서 이런 값들을 캐싱해서 조회 시 RDB를 거치지 않게 하고 효율성을 높여보려고 하였다. Spring에서는 메서드에 캐시를 적용할 수 있는 인터페이스를 제공하고 있으며, 이 프로젝트에서는 구현체로 Redis를 사용하였다. Redis는 인메모리 기반의 비관계형 데이터베이스로 물리적인 디스크가 아닌 메모리에서 데이터를 처리하기 때문에 속도가 매우 빠르다. 이번 프로젝트에서는 설치가 간단하고, Spring에서도 손쉽게 사용할 수 있는 Redis를 선택하였다. 1. Redis 설치 & 사용법 [Ubuntu] sudo a.. 2023. 2. 6. 순한 수열 순한 수열 백준 12104번 문제 https://www.acmicpc.net/problem/12104 12104번: 순환 순열 두 바이너리 문자열 A와 B가 주어졌을 때, A와 XOR 했을 때, 0이 나오는 B의 순환 순열의 개수를 구하는 프로그램을 작성하시오. 순환 순열이란 순열 P = P0, P1, ..., PN-1이 있을 때, 왼쪽으로 k번 순환 www.acmicpc.net 1. 문제 2. 풀이 2.1 풀이 방법 문제에서 요구하는 대로, B 순열을 왼쪽으로 이동시키며 A와 같아지는 경우를 찾으면 된다. 예를 들어 아래와 같은 순열이 주어졌다고 하자. [순열 예_그 1] B 순열을 왼쪽으로 한 칸씩 이동시키면서 A와 같아지는지를 확인한다. [순열 예_그 2] 이 예제의 경우 B 순열을 4번 이동 시키.. 2023. 1. 21. [설정] 초기 개발환경 구성 초기 개발환경 구성 프로젝트를 몇 번 진행하다보니, 초반 설정에 공통되는 부분이 많다고 생각했다. 프로젝트가 Spring Boot라는 동일한 프레임워크 내에서 개발을 하는 것이기 때문에, 당연히 각 프로젝트의 초기 세팅의 큰 틀은 거의 비슷할 수 밖에없다. 테스트, 보안,예외처리, 그리고 프로젝트 내에서 사용될 각종 부가적인 세팅까지 프로젝트마다 세세한 내용은 달라지겠지만, 방향이 크게 다르지 않다면 분명히 반복되는 부분이 존재한다. 그래서 나는 이런 반복되는 초기 설정들을 구성해서 하나의 프로젝트로 만들어놓았다. [GitHub: Init_Spring_Project] [Init_Project_Spring 구조] Init_Spring_Project라는 프로젝트에 프로젝트 시작시 반복적으로 세팅해주어야 하는.. 2023. 1. 20. 이전 1 ··· 3 4 5 6 7 8 9 ··· 34 다음