https://school.programmers.co.kr/learn/courses/30/lessons/12982
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
오랜만에 부분합 문제
1. 정렬한다
2. 정렬한 리스트의 부분합 리스트를 만든다
3. 그 구간들을 가지고 계산을 한다 !
def solution(d, budget):
# 부분합이 budget 이하인 가장 많은 부분은 몇 개?
d.sort()
start = 0
end = 1
pre_sum = [0]*(len(d)+1)
for i in range(1,len(pre_sum)):
pre_sum[i] = pre_sum[i-1] + d[i-1]
answer = 0
# 시작지점이 끝 지점이 아닐 때
while start < len(d):
# 특정 구간합이 budget 이하일 때
if end <= len(d) and pre_sum[end] - pre_sum[start] <= budget:
# 구간이 answer보다 클 때만
if end-start > answer:
answer = end-start
# 구간 늘리기
end += 1
# 특정 구간 합이 budget 이상일 때 / end가 끝까지 갔을 때
else:
# 끝까지 갔다면 start를 뒤로 밀기
start += 1
return answer
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 시저암호 -python (0) | 2024.03.12 |
---|---|
[프로그래머스] 최소직사각형 - python (0) | 2024.03.11 |
[프로그래머스] 3진법 뒤집기 - python (0) | 2024.03.05 |
[SQL] 인기있는 아이스크림 (0) | 2024.03.04 |
[프로그래머스] 정수 제곱근 판별 - python (0) | 2024.02.22 |