알고리즘

Study/코딩 테스트

2021.3.1 [백준] 공항

서로소 집합 알고리즘(분리 집합 알고리즘) Q www.acmicpc.net/problem/10775 10775번: 공항 예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불 www.acmicpc.net A 이중 반복문을 이용하여도 풀 수 있으나 시간초과가 된다. 따라서 분리집합 알고리즘을 이용하여야 한다. 코드 def find_parent(x): #루트노드 찾기 if p[x] != x: p[x] = find_parent(p[x]) return p[x] def union(x, y): #합집합 x = find_parent(x) y =..

Study/코딩 테스트

2021.2.28 [백준] 퇴사

다이나믹 프로그래밍 알고리즘 Q www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net A 다이나믹 프로그래밍으로 푸는 것은 점화식 세우기가 가장 중요하다. 코드 n = int(input()) array = list(list(map(int, input().split())) for _ in range(n)) d = [0]*16 #DP 테이블 초기화 for i in range(n): if i + array[i][0]

Study/코딩 테스트

2021.2.26 [백준] 경로 찾기

플로이드 워셜 알고리즘 Q www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net A 입력받는 것이 고민이였다. 입력이 여러 개로 들어오고, 케이스마다 달라질 수 있기 때문에 다른 리스트로 입력받았더니 내가 그걸 해결하지 못했다. 그냥 graph.append로 그래프에 넣어주는게 제일 쉽다. 코드 INF = int(1e9) n = int(input()) graph = [] for _ in range(n): graph.append(list(map(int, input().split()))) #입력을 그래프에 넣..

Study/코딩 테스트

2021.2.26 [백준] 명제 증명

플로이드 워셜 알고리즘 Q www.acmicpc.net/problem/2224 2224번: 명제 증명 첫째 줄에 출력할 명제의 개수 X개를 출력한다. 다음 X개의 줄에 증명될 수 있는 명제를 한 줄에 하나씩 출력한다. 명제를 출력할 때에는 전건 순으로 정렬하고, 전건이 같은 경우에는 후건 순으 www.acmicpc.net A 플로이드 워셜로 푸는데 상당히 고민했다. P => P 같은 경우는 출력하지 않기로 한다는 조건을 빼먹어서 애먹었고, 출력할 명제 갯수 세는데도 고생했었다. 코드 import sys INF = int(1e9) n = int(sys.stdin.readline().rstrip()) graph = [[INF] * (123) for _ in range(123)] #ord('a')=97, or..

NOredstone
'알고리즘' 태그의 글 목록 (2 Page)