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.
🔗 문제 링크
도둑
✔️ 소요된 시간
40분
✨ 수도 코드
집의 개수
n
, 도둑이 돈을 훔쳐야 할 연속된 집의 개수m
,자동 방범장치가 작동하는 최소 돈의 양
k
가 주어질 때,도둑이 붙잡히지 않고 돈을 훔칠 수 있는 m개의 연속된 집을 고르는 방법의 수를 출력!
ex)
n=8, m=3 k=15,
3 4 7 5 6 4 2 9 이면 (첫집3-마지막집9는 연결되어 있음!!)
m=3이므로 크기가 3인 윈도우를 설정해 순서대로 윈도우를 오른쪽으로 한칸씩 옮겨가며
윈도우의 합이 15가 넘지 않는 경우를 세면 된다!
(3 4 7), (6 4 2), (2 9 3)으로 3가지 방법이 있으므로
3출력
1. 첫집과 마지막집을 연결한다.
첫집과 마지막집을 어떻게 연결할 것인가?
(예시 기준 마지막 윈도우는 (9 3 4)여야 한다)
마지막 원소를 시작으로 m개의 윈도우가 만들어질수 있도록
처음 원소부터 필요한 원소만큼을 리스트에 append해주면 된다!!
단, m==n일 시에는 ex) n=3, n=3, 3 4 5
어떤 윈도우든 크기가 같으므로 이 경우는 제외한다!
2. 크기가 m인 윈도우를 만들어 그 합이 k를 넘지 않는 경우의 수를 구한다.
윈도우를 오른쪽으로 한칸씩 이동시키면서
start+=1; end+=1
제외된 원소는 빼주고
count-=home[start]
추가된 원소는 더해준다
count+=home[end]
전체코드
📚 새롭게 알게된 내용
첫집과 마지막집이 연결되는 걸 구현하면 이후에는 풀만한 문제였습니다!!
다음문제는 탐색 알고리즘들을 다시 공부하겠습니다
BFS, DFS 가 익숙하지 않으니까 PR 리뷰가 쉽지 않더라구요😂
백준 문제들로 훈련하고 못풀었던 고득점 키트문제들 도전해보겠습니다!!
<도움받은 출처>
https://velog.io/@030831/%EB%B0%B1%EC%A4%80-13422-%EB%8F%84%EB%91%91-Python