[유병규-15주차 알고리즘 스터디] #72
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반 알고리즘 스터디 15주차 [유병규]
📌 문제 풀이 개요
✅ 문제 해결 여부
💡 풀이 방법
문제 1: 개똥벌레
문제 난이도
문제 유형
접근 방식 및 풀이
높이가 H인 동굴에서 각 높이 h별 통과하는 장애물의 개수를 저장하는 배열을 생성하여 문제를 해결하였습니다.
처음에는 이 배열을 생성할 때 단순히 모든 장애물에 대해 각 높이에 해당하면$O(N*H)$ 의 시간복잡도를 가져 시간 초과가 났습니다. 그래서 누적합으로 접근하였습니다.
+1
을 하는 방식으로 구현하였습니다. 하지만 이러한 방식은먼저 각 장애물에 대한 높이 변화량을 저장하는 배열을 생성합니다. 이때 장애물이 시작하는 지점에
+1
, 장애물이 끝나는 지점 바로 다음에-1
을 해줌으로써 장애물의 변화량만 표시합니다.이제 변화량을 저장한 배열을 통해 최종적으로 누적합 배열을 생성합니다. 누적합 배열은 다음과 같은 점화식을 가집니다.
sum[i] = sum[i-1] + diff[i]
예시
예를 들어, 높이가 3인 석순이 있다고 가정해 보겠습니다
이렇게 하면 높이 배열 diff는 [0, 1, 0, 0, -1, 0, ...] 같은 형태가 됩니다.
이제 누적합을 계산하면:
결과적으로 sum 배열은 [0, 1, 1, 1, 0, 0, ...] 형태가 되며, 이는 각 높이에서의 장애물 개수를 나타냅니다.
이 누적합 배열을 통해 각 높이에 대한 장애물의 개수를 구할 수 있고 이때 최솟값과 그 구간의 개수를 구하는 것이기에 정렬 후 최종 답을 구했습니다. 위 방법으로 구할 경우$O(N+H)$ 의 시간 복잡도를 가지게 됩니다.
문제 2: 흙길 보수하기
문제 난이도
문제 유형
접근 방식 및 풀이
문제 3: 어항 정리
문제 난이도
문제 유형
접근 방식 및 풀이
문제 4: 단어 암기
문제 난이도
문제 유형
접근 방식 및 풀이
문제 5: 인터넷 설치
문제 난이도
문제 유형
접근 방식 및 풀이