11055 - 가장 큰 증가하는 부분 수열

2023. 6. 5. 17:07·백준

 


 

문제

https://www.acmicpc.net/problem/11055

 

11055번: 가장 큰 증가하는 부분 수열

수열 A가 주어졌을 때, 그 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가하는

www.acmicpc.net

 

풀이

가장 긴 증가하는 부분 수열과 비슷한 문제이다.

단 차이점은, 증가하는 부분 수열중 합이 가장 큰 값을 반환해야하는 것이다.

 

이 문제 또한 특정 인덱스에서 앞을 순회하면서,

1) 나보다 값이 작다면

2) 갱신되는 값이 더 크다면

갱신해준다. 라는 플로우를 따르면 된다. 

 

식으로 나타내면  D[i] = max(D[i], D[j] + arr[i]) 

(점화식 배열인 D[i] 는 i 까지 증가하는 수열의 가장 큰 합이 들어가있다. )

 

코드

l = int(input())
arr = list(map(int, input().split()))
s = [0] * 1001
for i in range(l):
    s[i] = arr[i]
for i in range(1,l):
    for j in range(i):
        if arr[j] < arr[i]:
            s[i] = max(s[i],s[j] + arr[i])

print(max(s))

 

후기

로직을 처음부터 생각하지 않고, 가장 긴 증가하는 수열 코드를 이리저리 만져서 풀려다가 오히려 헤맸다.

문제를 처음부터 천천히 접근하면서 생각하고 푸는 습관을 기르자.

'백준' 카테고리의 다른 글

18353 - 병사 배치하기  (0) 2023.06.09
14501 - 퇴사  (0) 2023.06.09
11053 - 가장 긴 증가하는 부분 수열  (0) 2023.06.04
11727 - 2 x n 타일링2  (0) 2023.06.04
11726 - 2 x n 타일링  (0) 2023.06.04
'백준' 카테고리의 다른 글
  • 18353 - 병사 배치하기
  • 14501 - 퇴사
  • 11053 - 가장 긴 증가하는 부분 수열
  • 11727 - 2 x n 타일링2
whiporithm
whiporithm
https://github.com/whipbaek
  • whiporithm
    whiporithm
    whiporithm
  • 전체
    오늘
    어제
    • 분류 전체보기 (175)
      • 개발 (16)
      • LeetCode (3)
      • 백준 (79)
      • 프로그래머스 (64)
      • 회고 (6)
      • 쉘 스크립트 (4)
      • 자바 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    nestjs 배포
    자바
    자바코테
    파이썬코딩테스트
    카카오
    Java
    파이썬알고리즘
    프로그래머스
    카카오코테
    카카오코딩테스트
    코딩테스트
    알고리즘
    백준
    개발
    파이썬코테
    코테
    자바알고리즘
    쉘
    파이썬
    쉘스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
whiporithm
11055 - 가장 큰 증가하는 부분 수열
상단으로

티스토리툴바