용꿀
꼬마개발자허니
용꿀
전체 방문자
오늘
어제
  • 분류 전체보기 (250)
    • 개발 (77)
      • 스프링 입문 (7)
      • 스프링 기본 (9)
      • ToDo List using JPA (2)
      • 스프링 개념 (9)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (8)
      • 스프링 MVC (3)
      • CS (21)
      • 개발 팁 (8)
      • 스프링 MSA (5)
      • 곰터뷰🐻 (5)
    • 알고리즘 (169)
      • 알고리즘 문제 풀이 (165)
    • 잡동사니 (1)
      • 노래 가사 (1)
hELLO · Designed By 정상우.
용꿀

꼬마개발자허니

(Python) 백준 1912번 - 연속합
알고리즘/알고리즘 문제 풀이

(Python) 백준 1912번 - 연속합

2024. 3. 22. 00:59

문제 링크: https://www.acmicpc.net/problem/1912

 

1912번: 연속합

첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

풀이

Dynamic Programming 문제답게 코드 구현보다는 문제 해결을 위한 아이디어를 생각하는 것이 더 어려운 문제이다.

 

문제 해결을 위한 아이디어는 다음과 같다.

  1. 우선 해당 인덱스까지의 최대값을 담을 배열을 선언한다.
  2. 그 후 처음부터 순회하며 해당 인덱스까지의 최대값을 계산하고 이를 저장한다.
  3. 해당 인덱스까지의 최대값은 이전 인덱스에서의 최대값 또는 현재 인덱스의 값이 된다.
  4. 최종적으로 최대값들을 담은 배열에서의 최대값이 정답이 된다.
import sys

n = int(sys.stdin.readline())
arr = list(map(int, sys.stdin.readline().split(" ")))

_max = [0] * n
_max[0] = arr[0] # 첫번째 인덱스에서의 최대값은 당연히 첫번째 인덱스가 나타내는 값
for i in range(1, n): # 입력값들을 순회하며
    _max[i] = max(arr[i], _max[i-1] + arr[i]) # 현재 인덱스까지의 최대값(현재값 또는 이전까지의 최댓값 + 현재값)을 저장한다.

print(max(_max)) # 모든 인덱스에서의 최댓값 중 최댓값을 출력한다.

'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글

[프로그래머스 Lv.3] 정수 삼각형 (Python)  (0) 2024.03.27
[프로그래머스 Lv.3] 최적의 행렬 곱셈 (Python)  (0) 2024.03.26
[프로그래머스 Lv.3] 입국심사 (Python)  (0) 2024.03.21
[프로그래머스 Lv.2] H-Index (Python)  (0) 2024.03.20
(Python) 백준 6588번 - 골드바흐의 추측  (0) 2024.03.19
    '알고리즘/알고리즘 문제 풀이' 카테고리의 다른 글
    • [프로그래머스 Lv.3] 정수 삼각형 (Python)
    • [프로그래머스 Lv.3] 최적의 행렬 곱셈 (Python)
    • [프로그래머스 Lv.3] 입국심사 (Python)
    • [프로그래머스 Lv.2] H-Index (Python)
    용꿀
    용꿀

    티스토리툴바