@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • java
  • AWS CodeCatalyst
  • Python
  • flink
  • AWS CodeStar
  • sagemaker unified studio
  • AWS CodeArtifact
  • Agent
  • converse api
  • bedrock agent
  • CLASS
  • 티스토리챌린지
  • 오블완
  • 심폴릭링크
  • knowledge bases
  • 인터페이스
  • invokemodel api
  • bedrock
  • SageMaker
  • bedrock api

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

Algorithm/Baekjoon

14501번 파이썬

2022. 4. 5. 12:47
반응형

이 문제는 처음부터 n번째까지 반복해서 문제를 풀었다.

문제의 원리는 예를 들어 설명하는게 이해가 빠를 것 같다.

ex) 1일의 경우 3일이 걸리는 상담이 있는데

코드로 쓰면 num이 1인 경우이고 상담이 완료되는건 idx값이 3이되는 경우이다.

3일차의 최대로 받을 수 있는 금액이 1일차에 3일 상담을 진행해서 받을 수 있는 금액보다 작으면

그 idx에 num-1일까지 받을 수 있었던(1일차 전에 받았던 최대금액) 최대금액에 1일부터 시작해서 받을 수 있는 금액을 더해서 넣어준다.

그리고 마지막으로 p[num]=max를 해준 이유는

idx값이 모든 일 수가 될 수 없는 경우가 있기 때문에 (idx가 3,6,7인 경우 4,5,2,1값은 0이 됨)

현재 값과 전날까지 받았던 최대 금액과 비교해서 더 큰값을 p[num]에 저장해주었다.

import sys
input = sys.stdin.readline
n = int(input())
ary = [list(map(int,input().split())) for _ in range(n)]
p = [0 for _ in range(n+1)]
if ary[0][0]==1:
  p[1]=ary[0][1]
for num in range(1,n+1):
  idx = num+ary[num-1][0]-1
  if idx < n+1:
    if p[idx] < p[num-1]+ary[num-1][1]:
      p[idx]=p[num-1]+ary[num-1][1]
  p[num]=max(p[num],p[num-1])
print(max(p))
반응형
저작자표시

'Algorithm > Baekjoon' 카테고리의 다른 글

1920번 파이썬  (0) 2022.04.06
2133번 파이썬  (0) 2022.04.06
1699번 파이썬  (0) 2022.04.04
1912번 파이썬  (0) 2022.04.04
14002번 파이썬  (0) 2022.04.04
    'Algorithm/Baekjoon' 카테고리의 다른 글
    • 1920번 파이썬
    • 2133번 파이썬
    • 1699번 파이썬
    • 1912번 파이썬
    @Eeap
    @Eeap

    티스토리툴바