티스토리 뷰
문제
https://www.acmicpc.net/problem/11055
풀이
result[k] 는 numbers의 k번째 원소까지 증가하는 부분수열의 합을 나타냄.
즉, numbers[j]가 numbers[i]보다 작다는 것은 result[j]에 numbers[i]를 더할 수 있다는 얘기임. 이렇게 구하며 max값으로 result[i]로 바꿔주면 가장 큰 값으로 result[i]의 값이 정해짐.
마지막에 result의 max값을 출력해주면 됨.
Swift
import Foundation
let n = Int(readLine()!)!
let numbers = readLine()!.split(separator: " ").map { Int(String($0))! }
var result = Array(repeating: 0, count: n)
for i in 0..<n {
result[i] = numbers[i]
for j in 0...i {
if numbers[j] < numbers[i] {
result[i] = max(result[i], result[j] + numbers[i])
}
}
}
print(result.max()!)
Python
n = int(input())
numbers = list(map(int,input().split()))
result = [0] * n
for i in range(0,n):
result[i] = numbers[i]
for j in range(0,i+1):
if numbers[j] < numbers[i]:
result[i] = max(result[i],result[j] + numbers[i])
print(max(result))
_____________________________________________________________________________________________________
다른 언어도 같이 하면 좋을 것 같아서 파이썬으로 시작해봤는데 아직 모르겠음. swift를 그냥 옮겨두기만함. 아직 블로그에 작성 못한 문제가 너무 많음. 화잍ㅇ
'PS' 카테고리의 다른 글
[Python] 백준_단지번호붙이기(2667) (0) | 2023.03.11 |
---|---|
[Swift/Python] 백준_DFS와 BFS(1260) (6) | 2023.03.09 |
[Swift] 백준_암호 만들기(1759) (0) | 2023.02.18 |
[Swift] 프로그래머스_양궁대회 (0) | 2023.02.15 |
[Swift] 프로그래머스_두 큐 합 같게 만들기 (0) | 2023.02.14 |
댓글
최근에 올라온 글
- Total
- Today
- Yesterday