본문 바로가기

반응형

PS

(333)
[BOJ] 백준 11758 CCW (Swift) 문제 https://www.acmicpc.net/problem/11758 11758번: CCW 첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다. www.acmicpc.net 풀이 점 3개를 가지고 방향성을 알 수 있는 CCW라는 알고리즘이 있습니다. 공식으로는 $direction = (x1 \times y2 + x2 \times y3 + x3 \times y1) - (y1 \times x2 + y2 \times x3 + y3 \times x1)$ 이 $direction$이 양수이면 반시계방향, ..
[BOJ] 백준 2166 다각형의 면적 (Swift) 문제 https://www.acmicpc.net/problem/2166 2166번: 다각형의 면적 첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. www.acmicpc.net 풀이 신발끈 공식을 사용하여 풀이하였습니다. 소스코드 후기 신발끈 공식이라는게 있는지도 몰랐습니다. 공식만 안다면 쉽게 풀 수 있는 문제였습니다.
[BOJ] 백준 2213 트리의 독립집합 (Swift) 문제 https://www.acmicpc.net/problem/2213 2213번: 트리의 독립집합 첫째 줄에 트리의 정점의 수 n이 주어진다. n은 10,000이하인 양의 정수이다. 1부터 n사이의 정수가 트리의 정점이라고 가정한다. 둘째 줄에는 n개의 정수 w1, w2, ..., wn이 주어지는데, wi는 정점 i의 www.acmicpc.net 풀이 트리에서 DP를 사용하는 문제입니다. 독립 집합을 만들 때, 최대 가중치를 구하기 위해 다음과 같이 작성할 수 있습니다. 현재 노드를 선택헀다면, 다음 노드를 선택 못함 (현재노드의 가중치를 더함) 현재 노드를 선택하지 않았다면, 다음 노드를 선택하거나 안하거나. max(다음 노드를 선택한 값, 다음 노드 선택 안한 값) 점화식은 다음과 같이 세울 수 있..
[BOJ] 백준 2533 사회망 서비스(SNS) (Swift) 문제 https://www.acmicpc.net/problem/2533 2533번: 사회망 서비스(SNS) 첫 번째 줄에는 친구 관계 트리의 정점 개수 N이 주어진다. 단, 2 ≤ N ≤ 1,000,000이며, 각 정점은 1부터 N까지 일련번호로 표현된다. 두 번째 줄부터 N-1개의 줄에는 각 줄마다 친구 관계 트리의 에 www.acmicpc.net 풀이 트리에서 DP를 사용하는 문제입니다. 현재 노드가 얼리어답터가 아니라면, 다음 노드는 무조건 얼리어답터여야 함 현재 노드가 얼리어답터라면, 다음 노드는 얼리어답터일 수도.. 아닐 수도.. 점화식은 다음과 같이 정의할 수 있습니다. $f(n, 0) = $: n번 노드가 얼리어답터가 아님 $f(n, 1) = $: n번 노드가 얼리어답터 점화식: $f(n, ..
[BOJ] 백준 1949 우수 마을 (Swift) 문제 https://www.acmicpc.net/problem/1949 1949번: 우수 마을 N개의 마을로 이루어진 나라가 있다. 편의상 마을에는 1부터 N까지 번호가 붙어 있다고 하자. 이 나라는 트리(Tree) 구조로 이루어져 있다. 즉 마을과 마을 사이를 직접 잇는 N-1개의 길이 있으며, www.acmicpc.net 풀이 트리에서 DP를 사용하는 문제입니다. 현재 마을이 우수 마을 이라면 다음 마을은 절대 우수 마을이 될 수 없습니다. 현재 마을이 우수 마을 이라면 다음 마을은 우수 마을일 수도 있고 아닐 수도 있습니다. 여기서 dp로 사용할 배열의 점화식을 다음과 같이 정의할 수 있습니다. $f(n, 0) =$: n번째 마을이 우수 마을이 아님 $f(n, 1) =$: n번째 마을이 우수 마을임..
[BOJ] 백준 15681 트리와 쿼리 (Swift) 문제 https://www.acmicpc.net/problem/15681 15681번: 트리와 쿼리 트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) 이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V) www.acmicpc.net 풀이 트리에서 DFS + DP를 사용하여 풀 수 있는 문제입니다. r을 루트노드인 트리에서 탐색을 하면서, 서브트리에 속한 정점의 수를 계산할 수 있습니다. 이를 계산하면서, 모든 정점에 대해서 각 정점을 루트로 하는 서브트리에 속한 정점의 수를 DFS + DP를 사용해 계산할 수 있습니다. 소스코드 후기 트리에서 다이나믹 프로그..
[BOJ] 백준 17472 다리 만들기 2 (Swift) 문제 https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 풀이 구현할게 많았던 문제였습니다. 먼저, 저는 BFS를 사용해 섬에 번호를 부여해주었습니다. 그리고 다리를 놓는 방법에 대해서 고민을 했는데, 다리를 놓으려면 섬의 외각에 있어야 합니다. 섬에 외각에 있다는 것은 자신을 중심으로 상, 하, 좌, 우에 한 뱡향이라도 바다가 있으면 섬의 외각이라고 판별하였습니다. 섬의 좌표에서 상 하 좌 우를 확인하고, 바다가 있다면 다리..
[BOJ] 백준 6497 전력난 (Swift) 문제 https://www.acmicpc.net/problem/6497 6497번: 전력난 성진이는 한 도시의 시장인데 거지라서 전력난에 끙끙댄다. 그래서 모든 길마다 원래 켜져 있던 가로등 중 일부를 소등하기로 하였다. 길의 가로등을 켜 두면 하루에 길의 미터 수만큼 돈이 들 www.acmicpc.net 풀이 MST를 만드는 알고리즘으로 풀이할 수 있는 문제입니다. 저는 크루스칼 알고리즘을 사용하여 풀이하였고, 단순히 모든 길에 대한 거리를 더한 값에서, MST를 이루는 거리를 빼주는 값이 절약되는 최대 액수입니다. 소스코드 후기 MST를 만드는 방법에 대해 알고있다면 어렵지 않게 풀 수 있는 문제였습니다.

반응형