📊 Algorithm&SQL
[Java/프로그래머스] 예산
오늘 ONEUL
2022. 11. 27. 16:09
문제
풀이
(1) 문제 분석하기
- 가장 적은 신청 금액부터 더하여 비교할 수 있도록 먼저 배열 오름차순 정렬
- 반복문을 돌면서 i번째 요소를 누적해서 더하고, budget과 조건문으로 비교
- budget보다 작으면 count를 1 올려주고, 아니라면 반복문 멈춤
(2) 슈도코드 작성하기
누적해서 더한 값을 담을 sum 변수와
더해진 요소의 개수를 세어줄 count 변수 선언
for(d 배열의 길이만큼){
d의 i번째 요소를 sum에 더함
if(sum이 budget보다 작으면){
count를 1 올려줌
}else{
반복문 멈춤
}
}
count 반환
(3) 코드 구현하기
package algorithm.test27;
import java.util.Arrays;
public class Solution {
// 입력 받은 배열을 오름차순으로 정렬
// 합을 계산할 sum 변수와 합에 계산된 요소의 개수를 세어줄 count 변수 선언
// 반복문을 배열의 길이만큼 돌면서
// i번째 요소를 sum 변수에 더함
// sum이 budget보다 작으면 count를 1 올리고, 아니면 break;
public int solution(int[] d, int budget) {
int sum = 0, count = 0;
Arrays.sort(d);
// sum으로 더한 수를 비교하는 방법
for (int i = 0; i < d.length; i++) {
sum += d[i];
if (sum <= budget) {
count++;
} else {
break;
}
}
return count;
}
public static void main(String[] args) {
int[] d = {1, 3, 2, 5, 4};
int budget = 9;
Solution sol = new Solution();
System.out.println(sol.solution(d, budget));
}
}
+) 다른 사람 풀이 - budget으로 부터 뺀 수를 비교하는 방법
package algorithm.test27;
import java.util.Arrays;
public class Solution {
// 입력 받은 배열을 오름차순으로 정렬
// 합을 계산할 sum 변수와 합에 계산된 요소의 개수를 세어줄 count 변수 선언
// 반복문을 배열의 길이만큼 돌면서
// budget에서 i번째 요소를 뺌
// budget이 0보다 작으면 반복문을 멈춤
// 조건에 걸리지 않으면 count를 1 올려줌
public int solution(int[] d, int budget) {
int sum = 0, count = 0;
Arrays.sort(d);
// budget부터 뺀 수를 비교하는 방법
for (int i = 0; i < d.length; i++) {
budget -= d[i];
if (budget < 0) break;
count++;
}
return count;
}
public static void main(String[] args) {
int[] d = {1, 3, 2, 5, 4};
int budget = 9;
Solution sol = new Solution();
System.out.println(sol.solution(d, budget));
}
}
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr