_Rey
프로그래뭄
_Rey
전체 방문자
오늘
어제
  • 분류 전체보기 (118)
    • Life (2)
    • iOS (49)
      • iOS (13)
      • Swift (19)
      • UIKit (0)
      • RxSwift (6)
      • SwiftUI (11)
    • Design Pattern (14)
      • GoF - Creational Patterns (6)
      • GoF - Structural Patterns (7)
    • Data Structure & Algorithm (48)
      • Data Structure (3)
      • Algorithm (8)
      • Advent of Code 2024 (1)
      • 코테 스터디 TIL (36)
    • English (2)
    • Book (2)
      • Clean Architecture (2)

블로그 메뉴

  • Instagram
  • Github
  • Naver Blog

공지사항

  • Hello, Programoom

인기 글

hELLO · Designed By 정상우.
_Rey

프로그래뭄

Data Structure & Algorithm/코테 스터디 TIL

[99클럽 코테 스터디 28일차 TIL] 가장 큰 증가하는 부분 수열 - 백준 11055

2024. 11. 24. 15:06

LIS 변형 문제가 나왔다.

 

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

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

[입력]
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.
둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000)

[출력]
첫째 줄에 수열 A의 합이 가장 큰 증가하는 부분 수열의 합을 출력한다.

풀이 접근

가장 긴 증가하는 수열(Longest Increasing Subsequence; LIS)를 변현해서 풀었다.

LIS가 길이라면, 이 문제는 합을 구하면 된다.

따라서 DP Table은 각 요소자체로 초기화 한다.

var dp = nums

그리고 길이 값을 갱신하는 대신 합의 최대값으로 갱신한다.

dp[i] = max(dp[i], dp[j] + nums[i])

최종 코드 - Swift

let n = Int(readLine()!)!
let nums = readLine()!.split(separator: " ").map{ Int("\($0)")! }
var dp = nums
for i in 1..<n {
    for j in 0..<i {
        if nums[i] > nums[j] {
            dp[i] = max(dp[i], dp[j] + nums[i])
        }
    }
}
print(dp.max()!)

Conclusion

동적계획법 어렵다...

저작자표시 비영리 변경금지 (새창열림)

'Data Structure & Algorithm > 코테 스터디 TIL' 카테고리의 다른 글

[99클럽 코테 스터디 30일차 TIL] 상자넣기 - 백준 1965  (0) 2024.11.26
[99클럽 코테 스터디 29일차 TIL] 파도반 수열 - 백준 9461  (0) 2024.11.25
[99클럽 코테 스터디 27일차 TIL] 가장 긴 감소하는 부분 수열 - 백준 11722  (0) 2024.11.23
[99클럽 코테 스터디 26일차 TIL] 돌 게임 - 백준 9655  (0) 2024.11.22
[99클럽 코테 스터디 25일차 TIL] 주사위 쌓기 - 백준 2116  (0) 2024.11.21
    'Data Structure & Algorithm/코테 스터디 TIL' 카테고리의 다른 글
    • [99클럽 코테 스터디 30일차 TIL] 상자넣기 - 백준 1965
    • [99클럽 코테 스터디 29일차 TIL] 파도반 수열 - 백준 9461
    • [99클럽 코테 스터디 27일차 TIL] 가장 긴 감소하는 부분 수열 - 백준 11722
    • [99클럽 코테 스터디 26일차 TIL] 돌 게임 - 백준 9655
    _Rey
    _Rey
    잘 배워서 다 남주자

    티스토리툴바