알고리즘 2

[파이썬] 백준 10026번 문제, 적록색약 풀이 (DFS)

문제 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어져 있는데, 구역은 같은 색으로 이루어져 있다. 또, 같은 색상이 상하좌우로 인접해 있는 경우에 두 글자는 같은 구역에 속한다. (색상의 차이를 거의 느끼지 못하는 경우도 같은 색상이라 한다) 예를 들어, 그림이 아래와 같은 경우에 RRRBB GGBBB BBBRR BBRRR RRRRR 적록색약이 아닌 사람이 봤을 때 구역의 수는 총 4개이다. (빨강 2, 파랑 1, 초록 1) 하지만, 적록색약인 사람은 구역을 3개 볼 수 있다...

코딩테스트 2023.02.23

서로소 집합을 활용한 사이클 판별 - 파이썬

1. 서로소 집합은 무방향 그래프 내에서 사이클을 판별할 때 사용할 수 있습니다. 참고로 방향 그래프에서의 사이클 여부는 DFS를 이용해서 판별할 수 있습니다. 사이클 판별 알고리즘은 아래와 같습니다. 2. 입력받은 각 간선 정보를 하나씩 확인하며 두 노드의 루트 노드를 확인합니다. 1) 루트 노드가 서로 다르다면 두 노드에 대하여 합집합(Union) 연산을 수행합니다. 2) 루트 노드가 서로 같다면 사이클(Cycle)이 발생한 것입니다. 3. 그래프에 포함되어 있는 모든 간선에 대하여 2번 과정을 반복합니다. [초기단계] 모든 노드에 대하여 자기 자신을 부모로 설정하는 형태로 부모 테이블을 초기화 해줍니다. 인덱스 1 2 3 부모 1 2 3 [Step 1] 간선 (1,2)을 확인합니다. 노드 1과 노드..

알고리즘 2021.07.15