Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 모달
- level1
- 월간코드챌린지시즌2
- 월간코드챌린지시즌3
- androidstudio
- java
- 동적웹페이지
- 코딩테스트
- 나머지가1
- 코딩테스트연습
- bootstrap
- MSSQL
- Node
- 연습문제
- REACT
- Summer/WinterCoding
- 프로그래머스
- 부트스트랩
- 스킬체크
- 스킬체크테스트
- bootstrapModal
- AJAX
- Android
- 백준
- 안드로이드
- Programmers
- php
- modal
- SimpleDateFormat
- Fullcalendar
Archives
- Today
- Total
개발하는 고양이 오이
12. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 예산 / 2,6,18,19번 실패 해결 / 다른 사람의 풀이 본문
코딩테스트 - JAVA/프로그래머스 Programmers
12. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 예산 / 2,6,18,19번 실패 해결 / 다른 사람의 풀이
Cucum 2022. 4. 28. 10:46
https://programmers.co.kr/learn/challenges
프로그래머스 코딩테스트 연습 Level.1 - 예산
풀이
import java.util.*;
class Solution {
public int solution(int[] d, int budget) {
int answer = 0;
// 오름차순 정렬
Arrays.sort(d);
int sum = 0;
for (int i = 0; i < d.length; i++) {
// * d.length == 0 은 확인하지 않아도 됨. why? 제한사항에서 전체 부서의 개수는 1이상이라고 표시
if (budget < d[i]) { // 예산이 부족하다면
answer = 0;
break;
}
else if (d.length == 1 && d[i] < budget) { // 신청 부서가 하나이면서 신청 금액이 예산보다 작다면
answer = 1;
break;
}
else { // 신청 부서가 한개 이상
sum += d[i];
if (sum > budget) { // 신청 금액의 함이 예산보다 커지면
return answer;
}
answer++;
}
}
return answer;
}
}
(풀이 실패 과정)
①
import java.util.*;
class Solution {
public int solution(int[] d, int budget) {
int answer = 0;
Arrays.sort(d);
int sum = 0;
for (int i = 0; i < d.length; i++) {
sum += d[i];
if (sum > budget) {
answer = i;
break;
} else if (sum == budget) {
answer = i + 1;
break;
}
}
return answer;
}
}
첫번째 시도에서 테스트케이스 2,6,18,19번 실패
이유를 몰라서 검색을 진행해보니 부서가 하나인 경우를 확인해주지 않아서 문제
실제로 테스트케이스에 부서가 한개인 경우를 추가해보니 실패
②
import java.util.*;
class Solution {
public int solution(int[] d, int budget) {
int answer = 0;
Arrays.sort(d);
int sum = 0;
for (int i = 0; i < d.length; i++) {
sum += d[i];
// 부서가 하나이면서 신청 금액이 예산보다 작다면
if (d.length == 1 && sum < budget) {
answer = 1;
break;
}
else if (sum > budget) {
answer = i;
break;
} else if (sum == budget) {
answer = i + 1;
break;
}
}
return answer;
}
}
두번째 시도에서 테스트케이스 6,18,19번 실패
이에 대한 이유는 확실하게 알지 못했지만,
하단의 if-else문에서 answer값을 i로 찾는게 아니라, 오름차순으로 정렬해서 합해나간 금액(sum)이 예산(budget)보다 커지는 순간 return answer를 해줬고, 아닐때는 answer++로 바꿔서 풀었더니 통과
다른 사람의 풀이
정렬 후 처음 신청 금액부터 합해나가는 방법이 아닌, 총 예산에서 빼나가는 방법으로 짧게 표현 가능
감사합니다.
'코딩테스트 - JAVA > 프로그래머스 Programmers' 카테고리의 다른 글
14. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 폰켓몬 (0) | 2022.04.28 |
---|---|
13. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 최소직사각형° (0) | 2022.04.28 |
11. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 소수 만들기 (0) | 2022.04.27 |
10. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 없는 숫자 더하기° (0) | 2022.04.27 |
9. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 나머지가 1이 되는 수 찾기 (0) | 2022.04.27 |