21314 - 민겸 수
2025. 3. 12. 12:24ㆍPS/백준
문제
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 |