#include <stdio.h>
#include <vector>
#include <iostream>
using namespace std;
void solution(int N, int K, vector<int> list) {
int len = list.size() - 1; //배열의 끝에서부터 탐색 (문제는 오름차순으로 이미 정렬된 배열임.)
int ind = len; //인덱스 위치 선택자
int cnt = 0;
while (K > 0) {
if (list[ind] <= K) {
K -= list[ind]; //찾았을 경우, 해당 값 감소
cnt++; //횟수 갱신
ind = len; //위치 초기화
}
else ind--; //그 외의 경우, 위치 감소(뒤에서부터 앞으로 탐색)
}
cout << cnt;
}
int main() {
int N, K;
int coin;
//편의를 위해 벡터 사용
vector<int> list;
cin >> N;
cin >> K;
for (int i = 0; i < N; i++) {
cin >> coin;
list.push_back(coin);
}
//입력을 모두 마치고 함수 호출
solution(N, K, list);
}
13분 03초
코딩을 최대한 빠르게 하였습니다 사실 기록용이기도 하고 본보기가 되기에는 효율성이 매우 낮습니다..
겸사겸사 게시한거라 감안하시고 봐주시기 바라요 그래도 그나마 보기 편하시라고 제출한 후, 따로 주석을 달아놓았습니다!
'코딩테스트 문제풀이' 카테고리의 다른 글
[백준 1026] 보물 (0) | 2019.10.12 |
---|---|
[백준 1439] 문제 풀기 (그리디) (0) | 2019.07.08 |
[백준 1969] 문제 풀기 (그리디) (0) | 2019.07.03 |
[백준 5585] 문제 풀기 (그리디) (0) | 2019.07.01 |
[백준 11399] 문제 풀기 (그리디) (0) | 2019.07.01 |