Loading [MathJax]/jax/output/CommonHTML/jax.js

21314 - 민겸 수

2025. 3. 12. 12:24PS/백준

문제

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

느낀점

구현 기본 문제, 문자열은 더하기가 파이썬처럼 안된다.. append함수를 사용하자. 로직은 생각보다 쉬웠던 것 같은데, 엣지케이스를 조심해야할 듯. 그리디로 푸는 방법도 한 번 보면 좋을 것 같은데.. 귀찮..

풀이

#include <cmath>
#include <iostream>
#include <string>

using namespace std;

string calcMax(string s)
{
    string answer = "";
    int mCount = 0;
    for (size_t i = 0; i < s.size(); i++)
    {
        if (s[i] == 'M')
        {
            mCount++;
        }
        else
        {
            if (mCount > 0)
            {
                answer += '5';
                answer.append(mCount, '0');
                mCount = 0;
            }
            else
            {
                answer += '5';
            }
        }
    }
    if (mCount > 0)
    {
        answer.append(mCount, '1');
    }

    return answer;
}

string calcMin(string s)
{
    string answer = "";
    int mCount = 0;
    for (size_t i = 0; i < s.size(); i++)
    {
        if (s[i] == 'M')
        {
            mCount++;
        }
        else
        {
            if (mCount > 0)
            {
                answer.append(1, '1');
                answer.append(mCount - 1, '0');
                answer += '5';
                mCount = 0;
            }
            else
            {
                answer += '5';
            }
        }
    }
    if (mCount > 0)
    {
        answer.append(1, '1');
        answer.append(mCount - 1, '0');
    }

    return answer;
}

int main()
{
    string s;
    cin >> s;
    string maxS = calcMax(s);
    string minS = calcMin(s);
    cout << maxS << "\n";
    cout << minS;

    return 0;
}

 

'PS > 백준' 카테고리의 다른 글

19638 - 센티와 마법의 뿅망치  0 2025.03.10
17276 - 배열 돌리기  0 2025.03.08
16924 - 십자가 찾기  0 2025.03.07
16918 - 봄버맨  0 2025.03.06
9081 - 단어 맞추기  0 2025.03.05