[권혁준-16주차 알고리즘 스터디] #73
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🚀 싸피 15반 알고리즘 스터디 16주차 [권혁준]
📌 문제 풀이 개요
✅ 문제 해결 여부
💡 풀이 방법
문제 1: 흩날리는 시험지 속에서 내 평점이 느껴진거야
문제 난이도
Gold 3
문제 유형
접근 방식 및 풀이
최대 점수
를 x로 만들 수 있을 때, x 이하로도 항상 만들 수 있음을 보인다면 이분 탐색 + 매개 변수 탐색을 수행할 수 있습니다.구간을 자를 때는 그리디하게, 합이 x를 넘겼다면 잘라주는 방식을 적용합니다.
그러면, (x로 만들었을 때의 구간 개수) <= (x 이하로 만들었을 때의 구간 개수) 가 성립합니다.
이분 탐색 범위의 상한은 맞은 문제의 합으로 생각해서 2000000으로 잡았습니다.
문제 2: 구슬 탈출 4
문제 난이도
Gold 1
문제 유형
접근 방식 및 풀이
빨간 구슬과 파란 구슬의 위치를 상태로 가지는 BFS를 돌려주었습니다.
기울이기 작업이 조금 까다로웠는데, 저는 dx dy 배열과 while문 + 적당한 조건 분기로 구현했습니다.
문제 3: 세부
문제 난이도
Gold 3
문제 유형
접근 방식 및 풀이
일반적인 그래프에서 경로의 비용은 가중치의 합이지만, 이 문제에서는 가중치의 최솟값입니다.
따라서, 크루스칼을 돌리는데 간선 가중치가 큰 것부터 고려하여 해결했습니다.
문제 4: 커플 만들기
문제 난이도
Gold 2
문제 유형
접근 방식 및 풀이
성격 차이의 합이 최소가 되어야 함 -> 정렬 후, 포인터 이동시키는 느낌으로 DP를 돌려야겠다고 생각했습니다.
dp[i][j] = i번 남자와 j번 여자를 이어줬을 때의 최소 합.
mn[i][j] = i번 남자와 j번 여자까지만 고려했을 때의 최소 합.
이렇게 dp를 정의했고, 이로부터 dp[i][j] = mn[i-1][j-1] + abs(A[i] - B[j]) 라는 식을 얻었습니다.
이 dp식을 돌려, i >= min(N,M), j >= min(N,M)인 i,j에 대해 dp[i][j]의 최솟값을 구했습니다.
문제 5: Ignition
문제 난이도
Platinum 5
문제 유형
접근 방식 및 풀이
그래프를 모두 태운다 == 모든 간선을 태운다
라고 생각했습니다.따라서 각 간선이 타게 되는 최소 시간을 구하는 방법을 떠올리려 했습니다.
불을 붙이는 정점을 i라고 했을 때, j번 정점이 타게 되는 최소 시간은 i에서 j로 가는 최단 시간입니다.
간선 (s,e,l)에 대해, 이 간선이 타는 방법은 둘 중 하나입니다.
둘 모두 일반화할 수 있는 시간은 **(i -> s 최단 시간) + l + (i -> e 최단 시간)**이 됩니다.
모든 정점에 불을 붙여보며 최소 시간을 구해줬습니다.