Skip to content

[Algorithm] 가장 긴 증가하는 부분 수열 #190

Description

@hwangJi-dev

💬 문제

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


💬 Idea

  • dp라는 배열을 만든다. 이 때 dp에는 각 값 별 가장 긴 부분수열의 길이가 저장된다.
  • A를 돌면서 이전 인덱스들에 본인보다 작은 값이 있는지 검사한다.
  • 만약 본인보다 작은 값이 있다면 해당 인덱스의 dp(가장 긴 부분수열의 길이) + 1 과 자기 자신 중 더 큰 값을 dp에 저장하며 갱신한다.
  • dp의 가장 큰 값을 출력한다.

💬 풀이

import Foundation
func solution11053(){letN=Int(readLine()!)!
letA=readLine()!.split(separator:"").map({Int(String($0))! })vardp=Array(repeating:1, count: N)foriin0..<N {forjin0..<i {ifA[j]<A[i]{dp[i]=max(dp[j]+1,dp[i])}}}print(dp.max()!)}solution11053()

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions