-
[JS] 예산이노베이션 캠프/3주차_알고리즘 2023. 6. 21. 11:04
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12982
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
풀이1. 증감 연산자 (++) 사용
function solution(d, budget) { // 작은 수부터 정렬 // 정렬한 이유: 우리는 최대 지원 가능한 부서를 구해야 함. 작은 수부터 진행해야지 최대한 많은 수를 포함할 수 있음 d.sort((a, b) => a - b); let count = 0; // 1. 최대 지원 가능한 부서 수 저장할 변수 선인 및 할당 // 2. for문 사용하여 각 부서에서 신청한 예산에 접근 for (let i=0; i<d.length; i++) { budget -= d[i]; // 2-1) 전체 예산에서 부서별 예산 빼기 if (budget >= 0) count++; // 2-2) 전체 예산 값이 양수이면 최대 지원 가능 부서 증감 if (budget < 0) break; // 2-3) 전체 예산 값이 음수이면 종료 -> 더 이상 다른 부서 지원이 불가능한 상태 } return count; }
풀이2. 증감 연산자 (--) 사용
function solution(d, budget) { d.sort((a, b) => a - b); // 작은 수부터 정렬 // 1) 필요한 변수 선언 let sum = 0; // 1-1) 각 부서별로 요청한 예산의 총합 저장 let count = 0; // 1-2) 최대 지원부서 수 저장 // 2) for문 사용하여 각 부서에서 신청한 예산에 접근 for (let i=0; i<d.length; i++) { count++; // 2-1) 최대 지원 부서 수 무조건 증가 sum += d[i]; // 2-2) 부서에서 요청한 예산 저장 if (sum > budget) { // 2-3) 부서에서 요청한 예산의 합이 총 예산보다 큰 경우 count--; // 2-4) 증가시킨 최대 지원 부서 수 감소 break; // 2_5) 더 이상 다른 부서를 지원해줄 수 없는 상태, for문 종료 } } return count; }
728x90'이노베이션 캠프 > 3주차_알고리즘' 카테고리의 다른 글
[JS] K번째수 (0) 2023.06.21 [JS] 최대공약수와 최소공배수 (0) 2023.06.21 [JS] 약수의 합 (0) 2023.06.21 [JS] 약수의 개수와 덧셈 (0) 2023.06.21 [JS] 키패드 누르기 (0) 2023.06.20