[권혁준-12주차 알고리즘 스터디] #60
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반 알고리즘 스터디 12주차 [권혁준]
📌 문제 풀이 개요
✅ 문제 해결 여부
💡 풀이 방법
문제 1: 틱택토
문제 난이도
Gold 5
문제 유형
접근 방식 및 풀이
크게는 세 가지 경우로 나눴습니다.
X의 개수와 O의 개수
(X의 개수) - (O의 개수) 가 0 혹은 1이어야만 valid입니다.
대각 승리
대각 승리는 반드시 X만 승리하거나, O만 승리하거나, 둘 다 승리하지 못하는 경우 뿐입니다.
만약 X가 이겼다면, X의 개수가 O의 개수보다 많아야 valid입니다.
만약 O가 이겼다면, X의 개수와 O의 개수가 같아야 valid입니다.
가로,세로 승리
X와 O 둘 모두 가로 혹은 세로가 완성된 경우는 당연히 invalid입니다.
반대로, 둘 다 완성되지 못한 경우에는 게임판이 꽉 차지 않았다면 invalid입니다.
그 외의 경우에는 대각 승리를 판별할 때처럼 똑같이 개수를 비교해주었습니다.
문제 2: 미친 로봇
문제 난이도
Gold 4
문제 유형
접근 방식 및 풀이
(15,15)에서 시작해서 재귀적으로 인접한 칸들을 방문해나갔습니다.
칸을 옮길 때마다, 해당 방향이 나올 확률을 갱신하여 재귀 함수의 인자로 전달했습니다.
최종적으로 K칸 이동에 성공한 경우들을 전체 경우의 수로 나눠 답을 구했습니다.
문제 3: 입국심사
문제 난이도
Gold 5
문제 유형
접근 방식 및 풀이
단순하게, 제한 시간을 고정시켜놓고 결정 문제로 변환해서 시간 기준 이분 탐색으로 해결했습니다.
문제 4: 호석이 두 마리 치킨
문제 난이도
Gold 4
문제 유형
접근 방식 및 풀이
가중치가 모두 1로 동일해서, 모든 쌍의 최단 거리를 BFS로 구한 뒤 문제를 해결했습니다.
간선이 양방향이기 때문에, 왕복 시간은 편도 시간*2 가 성립함을 이용했습니다.
문제 5: 양팔저울
문제 난이도
Gold 3
문제 유형
접근 방식 및 풀이
배낭을 TreeSet으로 구현하고, 처음에 무게 0을 Set에 담아놓습니다.
이후로 추가 주어질 때마다, 배낭에는 양팔 저울 양쪽 무게의 차이를 관리합니다.
이 차이값이 곧 측정할 수 있는 무게들이 됩니다.
문제 6: 소트 게임
문제 난이도
Gold 4
문제 유형
접근 방식 및 풀이
순열을 String으로 바꿔서 방문 처리를 TreeSet으로 구현했습니다.
이후론 기본 BFS로 해결할 수 있었습니다.
문제 7: 행렬 곱셈 순서
문제 난이도
Gold 3
문제 유형
접근 방식 및 풀이
dp[s][e] = s번째 행렬부터 e번째 행렬까지 곱했을 때의 최소 곱셈 횟수
라고 정의하면, 아래처럼 점화식이 뽑힙니다.i번째 행렬의 세로 크기를 A[i], 가로 크기를 B[i]라고 정의하면,
$dp[s][e] = \min_{s \le m < e}(dp[s][m] + dp[m+1][e] + A[s] \times B[m] \times B[e])$
모든 행렬을 곱해야 하므로 정답은$dp[1][N]$ 이 됩니다.
문제 8: 최대공약수 하나 빼기
문제 난이도
문제 유형
접근 방식 및 풀이