티스토리 뷰

문제

 

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

 

11053번: 가장 긴 증가하는 부분 수열

수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이

www.acmicpc.net

 

 

풀이

 

이전에 풀었던 전깃줄 문제에서 배웠던 LIS를 직접적으로 알 수 있는 문제였다.

 

가장 긴 증가하는 부분 수열을 구하기만 하면 되므로 max값을 출력해주면 된다.

import Foundation

let n = Int(readLine()!)!
var numbers = readLine()!.split(separator: " ").map { Int(String($0))! }
var result = Array(repeating: 1, count: n + 1)
for i in 0..<n {
    for j in 0...i {
        if numbers[i] > numbers[j] {
            result[i] = max(result[i], result[j] + 1)
        }
    }
}
print(result.max()!)

 

 

_____________________________________________________________________________________________________

 

 

익숙해지자

댓글
최근에 올라온 글
Total
Today
Yesterday