알고리즘(46)
-
[Python] 백준 알고리즘 1926번 - 그림
[Python] 백준 알고리즘 1926번 - 그림 문제 출처 : https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 접근 방식 전형적인 DFS / BFS 방식의 문제이다. 상하좌우 좌표값을 설정하여 하나의 지점마다 조건에 맞는 부분을 찾아가며 풀어가는 구조이다. 문제에서 구하라는 바는 다음과 같다. 1로 이루어진 그림의 개수 -> 0으로 나눠진 부분의 개수를 파악해야 한다 각 그림의 크기를 구하며 그 그림의 크기 중 가장 큰 넓이를 찾아라 다음과 같이 ..
2022.03.06 -
[Python] 백준 알고리즘 11404번 - 플로이드
[Python] 백준 알고리즘 11404번 - 플로이드 문제 출처 : https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 접근방식 플로이드 와샬 알고리즘을 활용하는 문제이다. 다익스트라 알고리즘이 하나의 노드를 기준으로 각 노드의 최소 가중치를 구하는 알고리즘이라면 플로이드 와샬 알고리즘의 경우에는 전체 노드끼리의 최소 가중치를 구하는 문제이다. 플로이드 와샬의 경우 삼중 반복문을 통해서 다익스트라 알고리즘에 비하면 간단하게 구현이 가능하다. 다만..
2022.03.04 -
[Python] 백준 알고리즘 1927번 - 최소 힙
[Python] 백준 알고리즘 2407번 - 조합 문제 출처 : https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 접근 방식 파이썬에서 구현이 되어있는 heap 자료구조를 사용하여 문제 코드를 작성하였다. 이번 문제의 경우 구현되어 있는 힙에 숫자를 넣고 빼며 진행이 되는 코드들이다. 0이 들어오면 문제에서 힙에 들어가 있는 가장 작은 수를 출력하면서 빼내는 문제이다. 따라서 0이 들어갔을 때 0만 존재한다면 0이 나오는 경우..
2022.03.03 -
[Python] 백준 알고리즘 2407번 - 조합
[Python] 백준 알고리즘 2407번 - 조합 문제 출처 : https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 접근 방식 순열과 조합의 기본을 다루는 문제이다. 순열과 조합 둘 다 개념을 생각해 보면 팩토리얼로 구성된 식으로 표현이 가능하다. 따라서 팩토리얼을 계산하는 메서드를 정의해 주고 그 팩토리얼 메서드를 기반으로 코드를 구성하였다. 문제에서 요구하는 조합의 경우 조합의 정의는 다음과 같다. 메소드를 구현한 후 조합의 정의에 맞춰서 출력을 했다. 코드 # 주어진 문제를 풀기위한 팩토리얼 식 입력 def factorial(a): if a
2022.03.02