문제: 1267번: 핸드폰 요금
basic-algo-lecture/workbook/0x02.md at master · encrypted-def/basic-algo-lecture
#include <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <iomanip> // setprecision을 사용하기 위한 헤더
#include <climits>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> counts(n);
for (int i = 0; i < n; i++)
cin >> counts[i];
int sumY = 0;
int sumM = 0;
for (int i = 0; i < n; i++) {
int tmpY = counts[i];
int tmpM = counts[i];
while (tmpY - 30 >= 0) {
sumY += 10;
tmpY -= 30;
}
sumY += 10;
while (tmpM - 60 >= 0) {
sumM += 15;
tmpM -= 60;
}
sumM += 15;
}
if (sumY > sumM)
cout << "M" << " " << sumM << "\n";
else if (sumY < sumM)
cout << "Y" << " " << sumY << "\n";
else
cout << "Y M " << sumY << "\n";
return 0;
}
음. 일단 처음 풀었을 때 틀렸는데 이유가 보니까 나머지 값에 상관없이 마지막에는 한 번 더 더해주는 것이었다. 나는 나머지가 0이 아닐 때만 더해줬었는데 문제 잘 읽어보니까 0일 때도 더해주는 것이었다.. -_-.. 이거 브론즈 문젠데 반성 좀 해야 할 것 같다..
참고자료:
[바킹독의 실전 알고리즘] 0x02강 - 기초 코드 작성 요령 II - YouTube