알고리즘/백준 문제풀이
[boj] 백준 2209 조짜기 python 풀이
감자156
2023. 5. 11. 01:30
반응형
새로운 사람이 추가되면 생길 수 있는 새로운 팀을 모든 경우의 수를 따져가며 dp에 max(총점수)를 기록
예를 들어,
10
2 5 7 1 3 4 8 6 9 3
위 테스트 케이스의 경우에는
2, 5 다음 7이 새로 들어왔을 때, 생길 수 있는 새로운 팀은
2, 5 // 7
2 // 5, 7
2,5,7 (한 팀)
.
.
이런식
그런데 이전 dp에 빨간 글씨 경우는 모두 저장되어 있으므로
새롭게 생길 수 있는 팀의 점수에 가져다 더하면 됨.
모든 경우의 수를 보면서 제일 큰 점수를 가지는 경우를 dp에 저장.
문제)
https://www.acmicpc.net/problem/2229
2229번: 조 짜기
알고스팟 캠프에 N(1 ≤ N ≤ 1,000)명의 학생들이 참여하였다. 학생들은 열심히 공부를 하고 있었는데, 어느 날 조별 수업을 진행하기로 하였다. 조별 수업의 목적은 잘 하는 학생들과 덜 잘 하는
www.acmicpc.net
코드)
import sys
input = sys.stdin.readline
N = int(input().strip())
student_list = list(map(int, input().split()))
dp = [0 for _ in range(N+1)]
for i in range(N+1):
for k in range(i-1, -1, -1):
new_team_score = max(student_list[k:i]) - min(student_list[k:i]) # 새로운 사람이 포함되어 구성될 수 있는 팀의 점수
dp[i] = max(dp[k] + new_team_score, dp[i])
print(dp[-1])
반응형