넘치게 채우기

[LeetCode] 1957. Delete Characters to Make Fancy String 본문

PS/LeetCode

[LeetCode] 1957. Delete Characters to Make Fancy String

riveroverflow 2024. 11. 1. 11:29
728x90
반응형

https://leetcode.com/problems/delete-characters-to-make-fancy-string/description/?envType=daily-question&envId=2024-11-01

leetcode - Delete Characters to Make Fancy String

문제 유형: 문자열 처리

문제 난이도: Easy

 

문제

A fancy string is a string where no three consecutive characters are equal.

Given a string s, delete the minimum possible number of characters from s to make it fancy.

Return the final string after the deletion. It can be shown that the answer will always be unique.

 

fancy string은 3연속 이상 같은 문자가 나오지 않는 것을 말합니다.

최소 개수의 문자를 줄여서 fancy하게 변환하세요.

정답은 하나만 나오도록 보장됩니다.

 

풀이

2칸 이전의 문자, 이전의 문자를 따로 저장해놓고, 셋이 다 같은게 아니라면 계속 문자를 추가한다.

 

코드

C++

#pragma GCC optimize("03", "unroll-loops");
static const int __ = [](){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    return 0;
}();

class Solution {
public:
    string makeFancyString(string s) {
        string ans = "";
        char p = '-';
        char pp = '-';
        for(const auto &c : s) {
            if(!(p == pp && c == p)) {
                ans += c;
                pp = p;
                p = c;
            }
        }
        return ans;
    }
};
728x90
반응형