리뷰
5달만에 다시 덤볐으나 문제 조건을 제대로 읽지 않아 또 져버렸다...
https://www.acmicpc.net/problem/26596
문제 풀이
- 재료의 개수 m과 황금 비율을 비교할 gold_rate를 1.618로, 문자열, 정수로 이루어진 맵 dic를 초기화 해준다.
- m값을 입력 받고 m만큼 루프를 돈 뒤 재료명과 값을 입력받아 재료명을 키로 갖는 맵에 값을 더해준다.
- flag를 0으로 초기화 해주고 맵을 두개로 나누어 순회하며 특정 재료의 값 * 황금비율이 다른 재료의 값과 동일한지 찾아준다. 이때 재료가 동일한 경우에는 황금 비율로 인정하지 않는다.
- 만약 황금 비율을 찾았다면 flag를 1로 변경한 후 break 처리를 해준다.
- flag가 1인 경우 Delicious! 를, 아닐 경우 Not Delicious...를 출력해 준다.
참고 사항
val1과 val2가 동일한 값을 가질때 continue가 아닌 동일한 재료명일때 continue 처리를 해주어야 한다.
예시로 Cola = 1, Cider = 1 일 경우 왼쪽의 케이스에서는 황금비율이 인정된다.
정답 코드
#include<iostream>
#include<unordered_map>
using namespace std;
int m;
const double gold_rate = 1.618;
unordered_map<string, int> dic;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> m;
while (m--) {
string s; int v; cin >> s >> v;
dic[s] += v;
}
int flag = 0;
for (auto& val1 : dic) {
for (auto& val2 : dic) {
if ((int)(val1.second * gold_rate) == val2.second) {
if (val1.first == val2.first) continue;
flag = 1;
break;
}
}
if (flag) break;
}
if (flag) cout << "Delicious!";
else cout << "Not Delicious...";
}
728x90
'알고리즘 공부 > C++' 카테고리의 다른 글
[G3] 백준 2252번 줄 세우기 C++ 위상 정렬 (0) | 2024.09.10 |
---|---|
[S4] 백준 14911번 궁합 쌍 찾기 C++ 브루트포스 알고리즘, 정렬, Hash (2) | 2024.09.10 |
[S3] 백준 9017번 크로스 컨트리 C++ 구현 (0) | 2024.09.10 |
[G5] 백준 16935번 배열 돌리기 3 C++ 구현, 시뮬레이션 (0) | 2024.09.09 |
[P5] 백준 가장 긴 증가하는 부분 수열 5 C++ 이분 탐색, lower_bound (3) | 2024.09.08 |