프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12982)
자바 초급 문제의 Summer/Winter Coding(~2018) 안에 있는 예산 이다.
생각보다 빨리끝냈다. 40m정도 걸린 듯하다. 개인적으로 늘어서 그렇다기보다는 더 짧은 시간에 끝낼 수 있는 문제이고 내가 많이 부족하다는 느낌을 받게해주는 문제였다. 그만큼 겸손한 마음이 들 수 밖에 없는 것 같다.
처음엔 배열로 접근해보려고 했는데 그냥 그때그때마다 answer에 주자고 생각을 바꾸었다.
주석을 보시면 이클립스와 대화하는 필자의 모습이 보이실 거라고 생각이 든다. ArrayList<integer> 변수이름 = new ArrayList<Integer>(); 로 접근하는 게 더 빠를 것 같은 생각이 드는데 한 번 해봐야 알 것 같다. d의 배열 값을 0로 만들고 마지막 for문에서 그대로 돌린 점이 코드의 낭비를 만들었을 것같아서 아쉬운 마음이 든다.
안되겠지 요행은 안바래야지..하면서 체점에 들어갔는데 맞아버렸다.. 솔직히 뚱하고, 아쉽다. 더 하고 싶었던 모양인 것 같다.
다른 방식으로 접근해봐야겠다.
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
32
33
34
35
36
37
38
|
package 예산;
import java.util.*;
public class exam {
public int solution(int[] d, int budget) {
int answer = 0;
// d 는 부서당 써야하는 금액 정확히 그만큼 지원
// budget은 예산, 남아도 최대한 많은 부서를 지원해야함
// answer는 지원해준 부서의 수,, 배열의 합이 가장 크고 배열의 인덱스가 가장 많이 들어간 상황을 가정, 즉 배열의 길이가 더
// 길어야함.
Arrays.sort(d);// 배열 정렬, 작은 수대로 정렬 될 것임 예산이 작은 아이들 부터 줘야해
for (int i = 0; i < d.length; i++) {
if (d[i] < budget) {// 예산목록의 값이 예산보다 적은 값이면
answer += 1;// 답에 1추가하고..
budget -= (d[i]);// 넣은 d만큼 budget에서 삭감
d[i] = 0;// 돈주면 0 으로 만듦
} else {
break; // 남은 돈이 예산보다 for문 종료
}
}
// 남은 돈이 예산 값이랑 같을 때를 가정해보면
for (int i = 0; i < d.length; i++) {// 다시 d를 훑어보고..
if (d[i] != 0 && d[i] == budget) {// 남은 돈이 0원이 아닌데 예산과 같은경우
answer += 1; // 1추가하고 끝내자
break;
}
}
// list에 준 부서와 돈이 있겠지..?
return answer;
}
}
|
cs |
'자바 초급문제로 맨땅에 해딩하기' 카테고리의 다른 글
자바 초급문제 13-2. 실패율 도전 2일차. (0) | 2020.04.07 |
---|---|
자바 초급문제 13-1. 실패율 도전중. (0) | 2020.04.06 |
자바 초급문제 12. 시저 암호 (0) | 2020.04.05 |
자바 초급문제 11. 체육복. 완성 (0) | 2020.04.04 |
자바 초급문제 11. 체육복 (0) | 2020.04.04 |