코딩테스트 문제풀이
[백준 11047] 문제 풀기(그리디)
이기적인개발자
2019. 7. 1. 22:34
#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초
코딩을 최대한 빠르게 하였습니다 사실 기록용이기도 하고 본보기가 되기에는 효율성이 매우 낮습니다..
겸사겸사 게시한거라 감안하시고 봐주시기 바라요 그래도 그나마 보기 편하시라고 제출한 후, 따로 주석을 달아놓았습니다!