# 문제
# 입력 및 출력
# 풀이
내가 생각해도 좀 복잡하게 짠 것 같다ㅋㅋㅋㅋ
#include <iostream>
using namespace std;
int arr[10];
int main() {
int N, K, count = 0;
int* pointer = arr;
cin >> N >> K;
for (int i = 0; i < N; i++) {
cin >> arr[i];
}
for (int i = 0; i < N; i++) {
if (arr[i] <= K) {
pointer = &arr[i];
}
}
while (K / *pointer >= 0) {
if (K / *pointer == 0) {
pointer--;
if (pointer == arr) break;
continue;
}
K -= *pointer;
count++;
}
cout << count;
}
이게 그냥 틀렸다고 나오던데 while문에서 예외가 있지 않을까 하는데,,
방금 뭐가 문젠지 보다가 해결했다ㅋㅋㅋ
pointer--; 부분에서 포인터 예외가 발생한것 같다고 생각해서 if문으로 예외처리를 해줬더니 정상 작동한다,,
# 정답 1
#include <iostream>
using namespace std;
int arr[10];
int main() {
int N, K, count = 0;
int* pointer = arr;
cin >> N >> K;
for (int i = 0; i < N; i++) {
cin >> arr[i];
}
for (int i = 0; i < N; i++) {
if (arr[i] <= K) {
pointer = &arr[i];
}
}
while (K / *pointer >= 0) {
if (K / *pointer == 0) {
if (pointer != arr) pointer--;
else break;
continue;
}
K -= *pointer;
count++;
}
cout << count;
}
# 정답 2
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=namjs1540&logNo=221578707970
백준 11047 동전 0 풀이 C++
https://www.acmicpc.net/problem/11047 그리디 알고리즘 문제이다. 그리디 알고리즘 = 탐욕 알고리...
blog.naver.com
이거는 모르겠어서 구글링 찾아보고 작성한건데 더 복잡해보인다
벡터를 써서 오름차순으로 정렬하고 그걸 위에 정답 1처럼 계속해서 빼는 방식인데 더 불편함ㅋㅋ
그냥 참고용,,
위에 블로그 코드가 더 간단한데 다는 안보고 풀겠다고ㅋㅋ 더 복잡하게 된 느낌이다
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int compare(int a,int b) {
return a > b;
}
int main() {
int N, K, count = 0;
cin >> N >> K;
vector<int> v;
int coin = 0;
for (int i = 0; i < N; i++) {
cin >> coin;
if (K < coin) continue;
v.push_back(coin);
}
sort(v.begin(), v.end(), compare); // 내림차순 정렬
while (v.size() > 0) {
if (K - v.at(0) >= 0) {
K -= v.at(0);
count++;
}
else {
v.erase(v.begin(), v.begin() + 1);
}
}
cout << count;
}
'Algorithm > 📖Baekjoon' 카테고리의 다른 글
#5585 거스름돈 (0) | 2022.04.16 |
---|---|
#1026 보물 (0) | 2022.04.15 |
#11399 ATM (0) | 2022.04.14 |
#10942 팰린드롬? - 미완 (0) | 2022.04.13 |
#11404 플로이드 (0) | 2022.04.12 |
댓글