250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

devlog_owen

[프로그래머스] 예산 본문

algorithm/(js)프로그래머스

[프로그래머스] 예산

developer_owen 2023. 11. 5. 00:34
728x90

문제

 

 

 

1.배열 d를 오름차순으로 정렬한 다음

2.하나씩 더하면서 budget이랑 비교

 


 

 

나의 풀이

function solution(d, budget) {
    var answer = 0;
    let newD = d.sort((a, b) => a - b);
    let currentSum = 0;
    
for (let i = 0; i < newD.length; i++){
    currentSum += newD[i]
      if( currentSum <= budget){
        answer ++
    }else{
        break;
    }
}
  
    return answer;
}

 

1. 신청한 상품목록인 newD를 오름차순으로 정리하고 현재까지 선택한 상품 가격을 누적한 currentSum을 0으로 초기화.

    let newD = d.sort((a, b) => a - b);
    let currentSum = 0;
    

2. for문을 돌면서 현재 선택한 물품( newD[i])의 가격을 currentSum 에 누적시키고, currentSum이 budget을 넘으면 break문으로 멈추게 함.

for (let i = 0; i < newD.length; i++){
    currentSum += newD[i]
      if( currentSum <= budget){
        answer ++
    }else{
        break;}

 


 

다른 사람 풀이

function solution(d, budget) {
    let answer = 0;
    let newD = d.sort((a, b) => a - b);
    let currentSum = 0;
    let i = 0;

    while (i < newD.length && currentSum + newD[i] <= budget) {
        currentSum += newD[i];
        answer++;
        i++;
    }

    return answer;
}

 

내가 쓰고싶었던 while문. 나는 생각해보니 저 연산자 &&을 활용을 못하는거같다. 

 


 

회고

처음에 오름차순 정렬하는 것 까지는 수월했는데, 반복문을 처음에 while로 해서 코드를 만들었다.

근데 조건 설정하는게 나한테는 어려웠다;; 그래서 원래 비교적 많이 써본 for 문으로 코드를 결국 완성했다.

중간에 변수명 오타랑 if문을 for 문 안에 안넣어서 오류가 났는데 주의해야겠다.


 

 

 

 

728x90