Skip to content

YoonYn9915/9월 2-3주차/4문제#61

Merged
Mingguriguri merged 5 commits intoAlgorithmStudy-Allumbus:mainfrom
YoonYn9915:main
Sep 30, 2024
Merged

YoonYn9915/9월 2-3주차/4문제#61
Mingguriguri merged 5 commits intoAlgorithmStudy-Allumbus:mainfrom
YoonYn9915:main

Conversation

@YoonYn9915
Copy link
Member

주 목표 문제 수: 4개

푼 문제


백준 #13458. 시험 감독: 수학 / 브론즈2

정리한 링크: (바로가기)

🚩제출한 코드


N = int(input())

ans = list(map(int, input().split()))

B,C = map(int,input().split())

answer = 0

for i in range(N):
    ans[i] = ans[i] - B
    answer += 1
    if ans[i] <= 0:
        continue

    answer += ans[i] // C
    if ans[i] % C != 0:
        answer += 1


print(answer)

백준 #14501. 퇴사: dp / 실버3

정리한 링크: https://purple-jury-c2d.notion.site/29d95b0689e64972bf590f72e0b910bb?pvs=4

🚩플로우 (선택)

코드를 풀이할 때 적었던 플로우가 있나요?

  • 해당 문제는 정해진 기간에 백준이가 얻을 수 있는 최대 수익을 구하는 문제이므로, dp를 사용하며 dp에는 해당 날부터 퇴사일까지 일을 했을 때 받을 수 있는 최대 수익을 저장한다.
  • 퇴사 전 날 가장 dp가 적고, 1일차가 가장 dp가 크므로, dp는 역순으로 진행한다.
  • dp의 시작 조건은 dp[N+2] = 0, **t[N] == 1이면 dp[N+1] = p[N]**으로 설정하고 t[N] ≠ 1이면 dp[N+1]= 0으로 설정한다.
    • 마지막날 상담이 하루가 걸리면 마지막날에 상담을 진행하며 수익을 얻을 수 있고, 마지막날 상담이 하루를 초과하면 상담을 진행할 수 없기 때문에 최대수익은 0이기 때문이다.
  • 점화식은
    • 현재일 + 현재일에 예약된 상담일수 ≤ 퇴사일일때는 상담이 가능하므로 max(다음날의 최대수익, 현재일의 상담 예약 수익 + 상담이 끝나는 날의 최대 수익)

🚩제출한 코드

N = int(input())

T = [0]
P = [0]
dp = [0] * (N + 2)

for _ in range(N):
    arr = input().split()
    T.append(int(arr[0]))
    P.append(int(arr[1]))

#dp 시작 조건
if T[N] == 1:
    dp[N + 1] = 0
    dp[N] = P[N]
else:
    dp[N + 1] = 0
    dp[N] = 0

for i in range(N - 1, 0, -1):
    if i + T[i] <= N + 1:
        dp[i] = max(dp[i + 1], P[i] + dp[i + T[i]])
    else:
        dp[i] = dp[i + 1]

print(dp[1])

💡TIL

배운 점이 있다면 입력해주세요

  1. 점화식 조건에서 i+T[i] ≤ N+1이 있고 이것은 현재일 + 현재일에 예약된 상담일수가 퇴사일을 넘기지 않아서 상담이 가능하다는 것이다. 이때 퇴사일(N+1)에 대한 dp를 시작조건에서 정해놓지 않아서 i+T[i]가 N+1일때, indexError가 발생했다.
  2. 배열을 처리할 때 어떤 것은 1부터 시작하고 어떤 것은 0부터 시작해서 혼란이 있었다. index를 1 기준으로 처리해야 헷갈리지 않을 것 같다.

@Mingguriguri Mingguriguri self-requested a review September 30, 2024 09:21
Copy link
Collaborator

@Mingguriguri Mingguriguri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!

@Mingguriguri Mingguriguri merged commit 30273e9 into AlgorithmStudy-Allumbus:main Sep 30, 2024
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.

2 participants