ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Baekjoon - 14455] Don't Be Last!
    문제 풀이/Baekjoon Online Judge 2023. 2. 23. 19:20

    난이도: Silver IV

     

    태그

    더보기
    • Implementation (그러니까... 뭐 넣어야 할 지 모르겠어요)

     

    풀이

    1. 일단 기록해보자.

    더보기

    지문에 나온 7마리의 소에 대해, 짜낸 우유의 값을 0으로 설정해둡니다.

    그 뒤로는, 소 이름과 짜낸 양에 맞춰서 milk[cow] += amount; 해주면 되겠죠.

     

    2. 가장 적게 우유를 짜낸 소는?

    더보기

    사실 누가 가장 적게 짜냈는지는 중요하지 않습니다.

    그냥 가장 적게 나온 우유의 양만 알면 됩니다.

     

    그러니, 그냥 우유의 양의 최솟값을 찾으면 됩니다.

     

    3. 그 소보다 더 많이 짜낸 소들 중, 우유를 가장 적게 짜낸 소는?

    더보기

    평소에 최솟값 찾는 방식이랑 비슷하게 하면 됩니다.

    달라지는 점은, 우유의 양이 최솟값과 동일하면 확인하지 않고 패스한다는 점이죠.

     

    그만큼의 우유를 짜낸 소의 이름을 같이 저장해두는 걸 추천합니다.

    물론 동점이 발생한다면, Tie로 바꿔야겠죠.

     

    4. 코드

    더보기
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    map<stringint> mp;
     
    void Main(){
        mp["Bessie"= mp["Elsie"= mp["Daisy"= mp["Gertie"]
         = mp["Annabelle"= mp["Maggie"= mp["Henrietta"= 0;
        int n; cin >> n; while (n--){
            string s; int x; cin >> s >> x;
            mp[s] += x;
        }
        int mn = 1e9;
        for (pair<stringint> p : mp){ mn = min(mn, p.sc); }
        string ans = "Tie"int res = 1e9;
        for (pair<stringint> p : mp){
            if (p.sc == mn){ continue; }
            if (p.sc < res){ ans = p.fr; res = p.sc; }
            else if (p.sc == res){ ans = "Tie"; }
        }
        cout << ans;
    }
    cs
Designed by Tistory.