6137 - 문자열 생성

2025. 2. 25. 15:46PS/백준

문제

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

느낀점

응용 투포인터 문제, 어렵지 않았다

풀이

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int N;
    cin >> N;
    string s = "";
    string answer = "";
    for (int i = 0; i < N; i++)
    {
        char c;
        cin >> c;
        s += c;
    }
    int left = 0, right = N - 1;
    while (left <= right)
    {
        if (s[left] < s[right])
        {
            answer += s[left];
            left++;
        }
        else if (s[left] > s[right])
        {
            answer += s[right];
            right--;
        }
        else
        {
            answer += s[left];
            int tempLeft = left + 1;
            int tempRight = right - 1;
            while (tempLeft < tempRight && s[tempLeft] == s[tempRight])
            {
                tempLeft++;
                tempRight--;
            }
            if (s[tempLeft] < s[tempRight])
            {
                left++;
            }
            else
            {
                right--;
            }
        }
    }
    int iter = answer.size() / 80;
    for (int i = 0; i < iter + 1; i++)
    {
        string temp = answer.substr(i * 80, 80);
        cout << temp << "\n";
    }

    return 0;
}

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

1283 - 단축키 지정  (0) 2025.02.26
28066 - 타노스는 요세푸스가 밉다  (0) 2025.02.25
3151 - 합이 0  (0) 2025.02.25
24523 - 내 뒤에 나와 다른 수  (0) 2025.02.24
1806 - 부분합  (0) 2025.02.23