[Py_Lv1] 예산_소팅

Sunghun📈·2021년 4월 29일
0

프로그래머스

목록 보기
37/93
post-thumbnail

문제 설명

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.

제한 사항

  • d는 부서별로 신청한 금액이 들어있는 배열이며, 길이(전체 부서의 개수)는 1 이상 100 이하입니다.
  • d의 각 원소는 부서별로 신청한 금액을 나타내며, 부서별 신청 금액은 1 이상 100,000 이하의 자연수입니다.
  • budget은 예산을 나타내며, 1 이상 10,000,000 이하의 자연수입니다.
  • 물품을 구매해 줄 수 있는 부서 개수의 최댓값을 return 하세요.

입출력 예

접근법

우선, 부서별로 요청한 금액이 담긴 d(list)의 정렬이 우선 되어야 한다.

정렬되어있지 않은 상태에서 d(list)에 담긴 값을 무작위로 대입하기에는
문제가 매우 복잡해질 수 있기 때문이다.

그 다음은 for문을 이용해 정렬된 d(list) 내 값을 하나씩 꺼내 예산이
담긴 변수 budget을 비교하여 값이 작을 경우에만 budget 값에서
부서가 요청한 물품비용을 빼고 그 값을 다시 budget에 저장한다.

제출해야될 값이 지원 가능한 부서의 개수이므로 제출한 변수인 answer에
1을 더하여 저장한다.

여기서 핵심은 이러한 과정이 반복하여 진행 중 budget의 값이 d(list)
값보다 작을 경우 종료하고 answer을 return하도록 else에 break를
작성해준다.

문제에 대해 완벽히 이해했다면 쉽게 해결할 수 있는 문제였다.

=============================================================

def solution(d, budget):
    d.sort()
    answer = 0
    for i in d:
        if budget >= i:
            budget -= i
            answer += 1
        else:
            break
    return answer
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글