[김유성-13주차 알고리즘 스터디] #65
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반 알고리즘 스터디 13주차 [김유성]
📌 문제 풀이 개요
✅ 문제 해결 여부
💡 풀이 방법
문제 1: 마법사 상어와 복제
문제 난이도
골드 1
문제 유형
구현, 시뮬레이션
접근 방식 및 풀이
복제 마법 실행 -> 물고기 이동 -> 상어 이동 방향 구하기 -> 잡아먹기 -> 기존의 물고기 냄새 지우기 -> 복제
이 순서로 진행을 하였습니다.
문제 2: 궁금한 민호
문제 난이도
골드 2
문제 유형
플로이드-워셜, 최단 경로
접근 방식 및 풀이
처음에 불가능한 경우가 잘 이해가 가지 않았습니다. 문제를 살펴보니까 최단경로를 구했다고 하였는데 이 말은 플로이드-워샬을 이용해서 i -> j까지 가는 경로를 구한 것이라고 생각했습니다. 즉, i -> j로 이어지는 직선 간선의 값이 무조건 최소이다. 만약 이 값이 최소가 아니면 불가능한 경우다. 로 이해했습니다.
이를 바탕으로 해서 풀이법을 고민하다가 간선을 하나씩 지워가는 식으로 문제를 풀었습니다.
문제 3: 놀이 공원
문제 난이도
골드 1
문제 유형
이분 탐색, 매개 변수 탐색
접근 방식 및 풀이
시간을 매개변수로 해서 이분 탐색을 진행했습니다. 해당 시간까지 각 놀이기구당 태울 수 있는 아이의 수를 합했을 때 N보다 큰지 작은지를 기준으로 했습니다. 이 때, 딱 나누어 떨어지지 않더라도 그 시간에 해당 놀이기구에 탑승하고 있는 아이가 있을 수 있기 때문에 이를 같이 고려해주어야 합니다.
이를 이용해서 아이의 수를 전체 놀이기구를 1싸이클 정도 돌았을 때 처리할 수 있을 정도로 낮춰주었습니다.
그리고 우선순위 큐를 이용해서 놀이기구에 1명씩 태워가면서 N이 0일 때 값을 출력해주도록 했습니다.
문제 4: BFS 스페셜 저지
문제 난이도
골드 3
문제 유형
BFS, 그래프 탐색
접근 방식 및 풀이
나와야 하는 숫자의 순서를 Queue에다가 저장해주었습니다.
그리고 옳은 값인지 확인해주기 위해서 Queue를 만들었고, 여기다가 Set을 저장해주었습니다.
이렇게 한 이유는 BFS는 들어간 단계(넓이)순서로 나와야 하면서 Queue에 들어간 자식들이 순서 상관없이 나와도 되기 때문입니다.
그래서 input값을 하나씩 확인하면서 만약 set안에 있다면 그대로 진행하고 없다면 잘못된 것이므로 바로 false를 return하도록 구현했습니다.
문제 5: 청소년 상어
문제 난이도
골드 1
문제 유형
구현, 시뮬레이션, 백트래킹
접근 방식 및 풀이
Fish객체를 만들고 Fish[][] map이라는 2차원 배열로 물고기를 저장해주었습니다.
이 문제의 핵심은 상어가 최대로 잡아먹는 물고기 번호의 합을 구하는 것이기 때문에 dfs를 이용했습니다.