안녕하세요. 오늘은 팀 이름을 정해볼 거예요.

문제

https://www.acmicpc.net/problem/1296

아이디어

  1. 정렬 함수를 만든다.
  2. 퍼센트 함수를 만든다.
  3. 정렬 함수에서 퍼센트를 기준으로 1차 비교를 한다.
  4. 같으면 문자열 비교를 한다.

소스코드

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;

string yeondu;
int percent(string s)
{
    int L = 0, O = 0, V = 0, E = 0;
    for (char c : yeondu)
    {
        if (c == 'L') L++;
        if (c == 'O') O++;
        if (c == 'V') V++;
        if (c == 'E') E++;
    }
    for (char c : s)
    {
        if (c == 'L') L++;
        if (c == 'O') O++;
        if (c == 'V') V++;
        if (c == 'E') E++;
    }

    return ((L + O) * (L + V) * (L + E) * (O + V) * (O + E) * (V + E)) % 100;
}
bool cmp(string s, string s2)
{
    if (percent(s) != percent(s2)) return percent(s) > percent(s2);
    return s < s2;
}

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    vector <string> v;
    int N, i;
    cin >> yeondu >> N;
    for (i = 0; i < N; i++)
    {
        string s;
        cin >> s;
        v.push_back(s);
    }

    sort(v.begin(), v.end(), cmp);

    cout << v[0];
}


감사합니다.

0개의 댓글