728x90
728x90
풀이
진기가 파는 붕어빵은 그냥 붕어빵이 아니라 겉은 바삭! 속은 말랑! 한입 물면 팥 앙금이 주르륵 흘러 입안에서 춤을 추며,
절로 어릴 적 호호 불며 먹었던 뜨거운 붕어빵의 추억이 떠올라 눈물이 나오게 되는 최고급 붕어빵이다.
진기는 이런 붕어빵을 보통 사람들에게는 팔지 않는다.
문제 너무 재밌게 만들어둔거 아닙니까 ....?
풀이로는 붕어빵 만들어지는 시간과 손님한테 붕어빵 주는 시간을 비교해서 붕어빵이 없으면 impossible로 변경 후에 출력해주었다. 생각보다 하드코딩으로 짜서 ,,, 다른 블로거님들꺼 참고해서 다시 짜봄..!
첫 번째 풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int t_c = 0;
cin >> t_c; // test case
for (int i = 0; i < t_c; i++) {
vector <int> v;
int N, M, K;
// N명에게 제공 , M초당 K개
cin >> N >> M >> K;
for (int j = 0; j < N; j++) {
int tmp;
cin >> tmp;
v.push_back(tmp);
}
sort(v.begin(), v.end()); //정렬
int cnt = 0; // 붕어빵 개수
int seconds = 0; // 초
int flag = 0; // 벡터 인덱스
string str = "Possible";
for (int i = 0; i <= v[v.size() - 1]; i++) {
if (M == seconds) { //붕어빵 만들어지는 시간
seconds = 0;
cnt += K;
}
if (v[flag] == i) { //손님한테 붕어빵 주는 시간
if (cnt <= 0) { //붕어빵 없을 때
str = "Impossible";
break;
}
flag++;
cnt--;
}
seconds++;
}
cout << "#" << i + 1 << " " << str << endl;
}
return 0;
} // main
두 번째 풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int t_c = 0;
cin >> t_c; // test case
for (int i = 0; i < t_c; i++) {
vector <int> v;
int N, M, K;
// N명에게 제공 , M초당 K개
cin >> N >> M >> K;
for (int j = 0; j < N; j++) {
int tmp;
cin >> tmp;
v.push_back(tmp);
}
sort(v.begin(), v.end()); //정렬
string str = "Possible";
for (int i = 0; i < N; i++) {
if (K * (v[i] / M) < i + 1) { // i+1 = 필요한 붕어빵 수
str = "Impossible";
break;
}
// v[i]/M (단위시간) * K(붕어빵) = 단위시간 당 붕어빵 수
}
cout << "#" << i + 1<<" " << str << endl;
} // main
return 0;
}
728x90
728x90
'Algorihtm > SWEA' 카테고리의 다른 글
C++ SWEA 2817. 부분 수열의 합 (0) | 2023.11.12 |
---|---|
C++ SWEA 1289. 원재의 메모리 복구하기 (0) | 2023.11.09 |
C++ SWEA 16800. 구구단 걷기 (0) | 2023.11.07 |
C++ SWEA 1983. 조교의 성적 매기기 (0) | 2023.11.07 |
C++ SWEA 1859. 백만 장자 프로젝트 (0) | 2023.11.03 |