반응형
우리가치 모각코 10회차
1. 일시
👉🏻 2022년 11월 22일
2. 장소
👉🏻 성곡도서관 지하 1층 카페 인피니티 / 북악관 카페
3. 학습내용
오늘은 각자 풀고 싶은 알고리즘 문제와 추천해주는 문제를 풀어보는 시간을 갖었다.
#3566
친구가 추천해준 문제는 3566번의 대형 스크린 문제다.
브론즈 문제라 쉽다고 생각하고 풀었는데, 처음에 내가 짠 로직으로는 계속 틀렸다고 나왔다. 질문 검색에 나와있는 반례로 테스트해보아도 맞는 답이 나오는데, 어떤 부분이 문제인지 해결하지 못하여 다시 처음부터 코드를 작성하여 답을 맞출 수 있었다.
실패한 코드
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
struct resolution
{
int h, v;
};
struct monitorSize
{
int h, v;
};
struct strt
{
resolution r;
monitorSize s;
int price = 0;
};
vector<int> prices;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
strt person;
cin >> person.r.h >> person.r.v >> person.s.h >> person.s.v;
int n;
cin >> n;
strt prod;
strt prodReverse;
for (int i = 0; i < n; ++i)
{
cin >> prod.r.h >> prod.r.v >> prod.s.h >> prod.s.v >> prod.price;
prodReverse.r.h = prod.r.v;
prodReverse.r.v = prod.r.h;
prodReverse.s.h = prod.s.v;
prodReverse.s.v = prod.s.h;
prodReverse.price = prod.price;
for (int i = 1;; ++i)
{
if (person.r.h <= (prod.r.h * i) && person.r.v <= (prod.r.v * i) && person.s.h <= (prod.s.h * i) && person.s.v <= (prod.s.v * i))
{
// cout << prod.r.h << " " << prod.r.v << " " << prod.s.h << " " << prod.s.v << " " << prod.price << "\n";
prices.push_back(prod.price * i);
break;
}
}
for (int i = 1;; ++i)
{
if (person.r.h <= (prodReverse.r.h * i) && person.r.v <= (prodReverse.r.v) * i && person.s.h <= (prodReverse.s.h * i) && person.s.v <= (prodReverse.s.v * i))
{
prices.push_back(prodReverse.price * i);
break;
}
}
}
sort(prices.begin(), prices.end());
cout << prices[0];
return 0;
}
통과한 코드
#include <algorithm>
#include <cmath>
#include <iostream>
using namespace std;
struct resolution
{
int h, v;
};
struct monitorSize
{
int h, v;
};
struct strt
{
resolution r;
monitorSize s;
int price = 2147000000;
};
strt person;
int getPrice(const strt &m)
{
int numOfH = max(ceil(person.r.h / (double)m.r.h), ceil(person.s.h / (double)m.s.h));
int numOfV = max(ceil(person.r.v / (double)m.r.v), ceil(person.s.v / (double)m.s.v));
return numOfH * numOfV * m.price;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> person.r.h >> person.r.v >> person.s.h >> person.s.v;
int n;
cin >> n;
strt prod;
strt prodReverse;
for (int i = 0; i < n; ++i)
{
cin >> prod.r.h >> prod.r.v >> prod.s.h >> prod.s.v >> prod.price;
prodReverse.r.h = prod.r.v;
prodReverse.r.v = prod.r.h;
prodReverse.s.h = prod.s.v;
prodReverse.s.v = prod.s.h;
prodReverse.price = prod.price;
person.price = min(person.price, min(getPrice(prod), getPrice(prodReverse)));
}
cout << person.price;
return 0;
}
4. 소감(느낀 점)
모각코를 신청했을 때가 엊그제 같은데, 벌써 우리가 계획했던 10회차를 모두 마쳤다.
기말고사가 끝나면 이제 학기도 마무리되고, 졸업을 한다고 생각하니 마음이 싱숭생숭하다.
그래도 모각코라는 프로그램을 통해 어렵기만 했던 알고리즘을 친구들과 함께 다양한 관점에서 바라보고 풀어보는 것이 값진 경험이 되었다고 생각한다. 그리고 또 하나의 추억을 만들 수 있어서 좋았다.
반응형