-
[💕 프로그래머스 Python] 예산 (Summer/Winter Coding 2018)Algorithm/1일 1코테 2020. 10. 17. 23:29반응형
프로그래머스 코딩테스트 연습
- Python3
<문제>
예산
programmers.co.kr/learn/courses/30/lessons/12982
<내가 푼 풀이>
1차 시도
40점으로 광탈!
def solution(d, budget): a = [] for i in range(0, len(d)-1): l = [] b = budget l.append(d[i]) b -= d[i] for j in range(i+1, len(d)): if b-d[j] > -1: l.append(d[j]) b -= d[j] a.append(len(l)) return max(a)
2차 시도
43점으로 광탈!
def solution(d, budget): max_n = 0 for i in range(0, len(d)-1): b = budget b -= d[i] count = 1 for j in range(i+1, len(d)): if b-d[j] > -1: b -= d[j] count += 1 if count > max_n: max_n = count return max_n
3차 시도
힌트를 get했다 ㅎ
count는 '최대'!가 되야한다는 것
최대가 되려면 가장 작은 값부터 빼줘야한다.
코드를 전면 수정했다.
def solution(d, budget): # 최대 몇개의 부서 -- 가장 작은 값부터 봐야 최대 계산 가능 d.sort() # 정렬 count = 0 # count 변수 for i in d: # d에서 하나씩 꺼내줌 if budget - i < 0: # 계속 빼주다가 0보다 작아지면 return count # 현재 count return else: # 아직 0보다 크면 budget -= i #계속 빼줌 count += 1 # 카운트는 올려줌 return count # i가 끝까지 갔을 경우 위에서 return이 안되서 return 따로 해줌
<다른사람 풀이>
def solution(d, budget): d.sort() # 정렬 while budget < sum(d): # budget보다 sum이 크면 d.pop() # 제일 큰 것부터 하나씩 빼줌 return len(d) # 남은거 return
문제 속에 답이 있다!
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[💕 프로그래머스 Python] 시저암호 (0) 2020.10.19 [💕 프로그래머스 Python] 2016년 (0) 2020.10.19 [💕 프로그래머스 Python] 크레인 인형뽑기 게임 (from kakao) (0) 2020.10.17 [🤷♀️ 프로그래머스 Python] 실패율 (from kakao) (0) 2020.10.17 [프로그래머스 Python] 캐시 (from kakao) (0) 2020.10.16