본문 바로가기

알고리즘3

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.
아기 상-어 아기 상-어 백준 16236번 문제 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 1. 문제 문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어.. 2022. 5. 16.
A-C A-C 백준 5430번 문제 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 1. 문제 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에.. 2022. 5. 15.