[권혁준-17주차 알고리즘 스터디] #78
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반 알고리즘 스터디 17주차 [권혁준]
📌 문제 풀이 개요
✅ 문제 해결 여부
신비한 대회의 연금술사💡 풀이 방법
문제 1: 피아의 아틀리에
신비한 대회의 연금술사문제 난이도
문제 유형
접근 방식 및 풀이
문제 2: 새로운 게임 2
문제 난이도
문제 유형
접근 방식 및 풀이
문제 3: 군사 이동
문제 난이도
Gold 3
문제 유형
접근 방식 및 풀이
많은 풀이들이 떠올랐다.
정답을 매개 변수로 놓고 이분 탐색도 가능하고, 이를 성능 개선시키면 결국 가중치가 큰 순서대로 크루스칼 알고리즘을 돌리는 풀이가 나옵니다.
저번 주에 풀었던 세부 문제랑 거의 같습니다.
문제 4: 인하니카 공화국
문제 난이도
Gold 3
문제 유형
접근 방식 및 풀이
문제 지문에
두 섬을 연결하는 다리를 최소한의 개수로 만들어 모든 섬 간의 왕래가 가능하도록 만들었다.
이런 말이 있습니다.
즉, 그래프는 트리 형태로만 주어진다는 의미이고, 리프에서부터 루트까지 올라오는 길목이 존재하지 않도록 적절히 차단해야 하는 문제로 바꿔서 생각했습니다.
D[n] = n을 루트로 하는 서브트리까지 오지 못하도록 막는 최소 비용
으로 정의하면,비용이 v인 간선 (n,c)에 대해 min(D[c], v)의 합이 D[n]이 됩니다.
DFS로 위 값을 리프에서부터 구해주면, D[1]이 문제의 정답이 됩니다.
문제 5: 택배
문제 난이도
문제 유형
접근 방식 및 풀이
문제 6: 집배원 한상덕
문제 난이도
Platinum 4
문제 유형
접근 방식 및 풀이
고도의 범위가 크지만, 고도의 종류는 최대 N^2 뿐입니다.
이동 가능한 고도의 범위 [L, R]을 제한한다면, 가능/불가능을 판별하는 결정 문제로 변합니다.
L을 완탐 돌리고 R을 이분 탐색으로 찾아서 문제를 해결했습니다.
(=> 같은 논리를 가지고, 이분 탐색 대신 투 포인터로 푸는 풀이가 더 빠르고 깔끔한 것 같아요)
문제 7: 어항 정리
문제 난이도
문제 유형
접근 방식 및 풀이
문제 8: Cubeditor
문제 난이도
Gold 2
문제 유형
접근 방식 및 풀이
처음엔 단순 투 포인터로 알고 풀었다가 틀렸습니다.
이후, KMP의 실패 함수(부분 일치 테이블)을 사용했습니다.
부분 일치 테이블의 최댓값이 곧 문제의 정답이 됨을 이용해서 풀었습니다.
A의 모든 접미사에 대해서 이를 수행해주고, 그 중 최댓값을 뽑아 출력했습니다.