백준 2839번 문제입니다.
제가 짠 코드인데 비효율적이고 쓸데없이 복잡한거 알고 있습니다. 찾아보니 그리디 알고리즘을 사용해야하는 문제더라고요 근데 그리디 알고리즘을 외우고 학습하기전에 제가 짠 코드의 어디부분이 잘못 굴러가는지 알아야할거 같아서 질문 올립니다.
#include <iostream>
#include <vector>
using namespace std;
int a;
int b;
int b1;
int c;
int c1;
vector<int> account;
void solve(int a);
int solve2(vector<int>& account);
int main() {
cout <<"설탕의 무게를 입력하세요: ";
cin >> a;
solve(a);
if (account.size() == 0) {
cout << " - 1";
}
cout << solve2(account);
}
void solve(int a) {
for (int j = 1; j < 100;j++) {
b = a % (5*j);
b1 = a / (5 * j);
if (b == 0) {
account.push_back(b1*j);
}
for (int i = 1; i < 100; i++) {
c = b % (3 * i);
c1 = b / (3 * i);
if (c == 0) {
account.push_back(b1*j+c1*i);
}
}
}
}
int solve2(vector<int> &account) {
int ab;
ab = account[0];
for (int i = 0; i < account.size();i++) {
if (ab > account[i]) {
ab = account[i];
}
}
return ab;
}
여기서 a에 11올리면 제가 생각하기에는 bj*j가 1나오고 ci*i가 2 나와서 b1*j+c1*i가 결국 3이 나와서 account 벡터에 3이 들어간다고 생각하는데 account에 아무값도 안들어가네요 뭐가 문제일까요?
이거 알고리즘 안 써도 됨
ㅇㅎ 그런데 제가 짠 코드에서 11 넣으면 왜 안될까요??
읽기 싫어서 안 읽었음
읽기 싫을정도로 못 짯나요?
아니 그냥 보통 다들 남이 쓴 코드 읽기 싫어함
내가 내 코드 읽어서 틀린 부분 찾기도 귀찮은데 남의 코드 읽고 동작 과정 이해하면서 어디서 빵꾸 났는지 봐줄 사람이 없음
걍 씨쁠쁠 자체가 읽기 존나싫다 ㅅㅂ 빨라서 코테때 많이쓰는건가 언리얼말고 왜쓰는지모르겠네 파이썬쓰고말지
b도 0이 아니고 c도 0이아니니깐
j가 1이고 i가 2면 c가 0이되는거 아니에요?