Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[유수민] 13주차 문제풀이 #70

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

proysm
Copy link
Contributor

@proysm proysm commented Dec 20, 2024

1466 지름길

문제풀이

  • (잘못된 접근) dp[10001][10001] 이렇게 두니 메모리 초과가 발생했다.
  • 핵심은, pair<int,int> 배열에 어떤 값을 저장하느냐이다.
  • 도착지의 위치를 기준으로 출발지와 길이를 저장한다. 그리고 1~d를 탐색하며 최소값을 계산한다.
graph[en].push_back({st, len});

알고리즘

  • 다익스트라

17484 진우의 달 여행(small)

문제풀이

  • 연속으로 같은 방향으로 이동할 수 없으므로 매개변수로 dir 값을 넘겨준다.
  • 마지막(n)에 도착했을 때 cost를 비교하여 최소비용을 구한다.
void recur(int i, int j, int dir, int cost)

알고리즘

  • 브루트포스

11722 가장 긴 감소하는 부분 수열

문제풀이

  • 이중 반복문을 사용한다.
  • 전형적인 DP 문제
// 반례
6
4 3 2 3 2 1 -> 정답은 4

알고리즘

  • dp

1699 제곱수의 합

문제풀이

  • 이중 반복문을 사용한다. 하지만 시간초과가 발생할 수 있으므로 벡터에 제곱수만 담아 놓는다. n이 최대(100,000)이더라도 제곱수의 최대는 316이므로 시간초과가 발생하지 않는다.
vector<int> sq;
for(int i=1; i<=s; i++){
    sq.push_back(i*i);
    dp[i*i] = 1;
}
// 반례
18 -> 정답은 2

알고리즘

  • dp

1309 동물원

문제풀이

  • 다음과 같이 dp배열을 정의한다.

    • dp[i][0] = i번째 행에 0마리의 사자 놓기
    • dp[i][1] = i번째 행의 왼쪽 칸에 사자 놓기
    • dp[i][0] = i번째 행의 오른쪽 칸에 사자 놓기
  • 점화식을 다음과 같이 정의한다.

dp[i][0] = (dp[i-1][0]+dp[i-1][1]+dp[i-1][2]) % MOD;
dp[i][1] = dp[i-1][0]+dp[i-1][2] % MOD;
dp[i][2] = dp[i-1][0]+dp[i-1][1] % MOD;
  • (잘못된 접근) dp[i][j]를 {i, j}칸에 사자를 놓지 않은 경우로 두고 풀었더니 꼬였다.
  • (다른 접근) dp[i]를 사자를 배치하는 경우의 수라고 두고 dp[i] = dp[i-1]*2 + dp[i-2]도 올바른 점화식이다.

알고리즘

  • dp

15486 퇴사

문제풀이

  • 다음과 같이 dp배열을 정의한다.

    • dp[t]: 날짜 t까지 얻을 수 있는 최대 포인트
  • 점화식을 다음과 같이 정의한다.

dp[today+day] = max(dp[today+day], dp[today]+point); // 오늘부터 상담을 시작하여 끝난 날의 포인트 갱신
dp[today+1] = max(dp[today], dp[today+1]); // 상담을 하지 않고 넘어갈 때 최대 포인트

알고리즘

  • dp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant