Minjeong / 4월 2주차 / 4문제 #188
Merged
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.
🌱WIL
계단수문제와극장좌석문제이다.계단수문제의 경우비트마스킹을 사용한다는 것이 새로웠다. 비트마스킹은 이론적으로는 아는 개념인데 이를 DP에 어떻게 적용하는지가 관건이었고 어려운 부분이었다. 이 문제를 통해서<<연산자가 언제, 왜 쓰이는지를 이번 기회에 정확히 알 수 있었다.극장좌석문제의 경우, 문제의 겉모습에서는 전혀 피보나치 수열의 규칙성이 보이지 않지만 조금 더 들여다보면 피보나치 수열이 사용되는 것이 놀라웠다. 피보나치 수열의 가능성을 다른 문제를 풀 때도 열어둬야겠다. 또한 VIP 좌석을 기준으로 구간을 나누고, 각 구간의 경우의 수를 따로 구해 곱하는 방식은 다른 문제에도 응용할 수 있을 것 같다.DP만 풀다가 다시 그래프 봤을 때 하나도 못 풀까봐 조금 걱정된다🚀주간 목표 문제 수: 3개
백준 #10844. 쉬운 계단 수: DP / 실버1
정리한 링크: (바로가기)
🚩제출한 코드
💡TIL
백준 #2193. 이친수: DP / 실버3
정리한 링크: (바로가기)
🚩플로우 (선택)
N을 입력받는다.dp배열을 초기화한다. (N+1길이로 생성)dp[1] = 1로 초기값을 설정한다.i가 2부터N까지 반복하면서 점화식에 따라 값을 채워나간다.dp[N]을 출력한다.🚩제출한 코드
💡TIL
백준 #1562. 계단수: DP / 골드1
정리한 링크: (바로가기)
🚩플로우 (선택)
입력 받기
N을 입력 받는다. (계단 수의 길이)MOD = 10^9설정DP 배열 정의
dp[n][last][mask]길이가
n, 끝자리 숫자가last, 지금까지 등장한 숫자의 비트마스크가mask인 경우의 수초기화
점화식 적용
정답 계산
0b1111111111(=1023)인 경우만 누적해서 출력🚩제출한 코드
💡TIL
비트마스킹에 대해서 개념적으로만 알고 있었는데,
실제로 문제 풀이에 활용하려 하니까 헷갈리는 부분이 많았다.
특히
<<연산자가 언제, 왜 쓰이는지를 이번 기회에 정확히 알 수 있었다.전체적으로 비트마스크를 활용한 DP 문제의 구조와 패턴을 체득할 수 있었던 좋은 경험이었다.
백준 #2302. 극장 좌석: DP / 실버1
🚩플로우 (선택)
입력 처리
N, VIP 좌석 개수M, VIP 좌석 번호를 입력받는다.DP 배열 초기화
dp[i]: VIP가 없을 때, 연속된i개의 좌석에서 가능한 배치의 수dp[i] = dp[i-1] + dp[i-2]dp[0] = 1,dp[1] = 1VIP 좌석 기준으로 구간 나누기
VIP 전까지의 자유 좌석 구간 길이를 계산하고,그 구간에서 가능한 배치 수
dp[구간 길이]를 누적해서 곱한다.마지막 구간 처리
결과 출력
🚩제출한 코드
💡TIL