C. Milk Measurement
- kir3i
λ¬Έμ μμ Farmer Johnμ νκ° λ²½μ κ°μ₯ μ°μ λ₯Ό λ§μ΄ μμ°νλ μ μμ μ¬μ§μ κ±Έμ΄λμ΅λλ€.
ꡬν΄μΌν κ²μ νκ° λ²½μ κ±Έλ €μλ μ μμ μ¬μ§μ΄ λ°λλ νμμ λλ€.
λ§μ½ μ°μ μμ°λμ΄ κ°μ₯ λ§μ μ μκ° λ λ§λ¦¬λ‘ μλ‘ λμ μ΄λ©΄ μ¬μ§μ λ μ₯ κ±Έμ΄μΌν©λλ€.
λ°λΌμ μ΄ λ¬Έμ λ βνΉμ λ μ§μ μ΅λλ‘ μ°μ λ₯Ό μμ° νλ μ μκ° λͺ λ²μ΄λ λ°λλκ°?β,
μ¦ μ΅λκ°μ μμΉμ κ°μκ° μΌλ§λ λ³νλμ§λ₯Ό ꡬνλ λ¬Έμ λΌκ³ ν μ μμ΅λλ€.
νμ΄ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
μ λ ₯λ°μ λ‘κ·Έλ₯Ό λ μ§κ° λΉ λ₯Έ μμΌλ‘ μ λ ¬νλ€.
1μΌλΆν° 100μΌκΉμ§ μ§ννλ©° λ‘κ·Έ μμ μΌμΉνλ λ μ§κ° μμΌλ©΄ μ°μ μμ°λμ λ³νλ₯Ό λ°μνλ€.
ν΄λΉ μΌμμμ μ΅λκ°μ ꡬνκ³ κΈ°μ‘΄μ μ μ₯ν΄λμλ statusμ λ€λ₯΄λ©΄ statusλ₯Ό κ°±μ νλ€.
-> ν λ² count.
μ°μ μμ°λ μ΅λκ°μ μμΉ, κ°μλ λΉνΈλ§μ€νΉμ μ΄μ©νμ¬ λνλμ΅λλ€.
<C++>
#include <iostream>
#include <string>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
int measure[3] = {7, 7, 7}; //0 - Bessie, 1 - Elsie, 2 - Mildred
vector<pair<int, pair<int, int>>> cowlog; // {day, {cow_num, d_milk}}
int find_max()
{
int rtn = 0;
int max_measure = max(measure[0], max(measure[1], measure[2]));
for(int i=0; i<3; i++)
if(measure[i] == max_measure)
rtn |= 1<<i;
return rtn;
}
int main(void)
{
cin.tie(0);
ios_base::sync_with_stdio(0);
int N;
cin >> N;
for(int i=0; i<N; i++)
{
int day, d_milk, cow_num;
string cow_name;
cin >> day >> cow_name >> d_milk;
if(cow_name == "Bessie")
cow_num = 0;
else if(cow_name == "Elsie")
cow_num = 1;
else if(cow_name == "Mildred")
cow_num = 2;
cowlog.push_back(make_pair(day, make_pair(cow_num, d_milk)));
}
sort(cowlog.begin(), cowlog.end());
//μ΄κΈ°μλ λͺ¨λ μ μμ μμ°λμ΄ λμΌνλ―λ‘ λͺ¨λ μ μμ μ¬μ§μ΄ κ±Έλ €μλ€.
int status = 1<<2 | 1<<1 | 1<<0;
int logidx = 0;
int cnt = 0;
for(int day=1; day<=100; day++)
{
for( ; logidx<N; logidx++)
{
if(cowlog[logidx].first == day)
measure[cowlog[logidx].second.first] += cowlog[logidx].second.second;
else
break;
}
int t = find_max();
//μ΅λκ°μ μμΉλ κ°μκ° λ¬λΌμ§ κ²½μ°
if(status != t)
{
status = t;
cnt++;
}
}
cout << cnt;
}Last updated
Was this helpful?