본문 바로가기

Algorithm/Implementation

(C++) - LeetCode (easy) 1758. Minimum Changes To Make Alternating Binary String

반응형

https://leetcode.com/problems/minimum-changes-to-make-alternating-binary-string/

📕 풀이방법

📔 입력 및 초기화

1. 0101... 의 pattern1을 만들기 위해 바꿀 문자 수 pattern1Altered와 1010...의 pattern2를 만들기 위해 바꿀 문자 수 pattern2Altered를 선언 후 0으로 초기화해줍니다.2. length를 선언해 s의 size값을 저장해줍니다.

📔 풀이과정

pattern1, pattern2를 length길이만큼 만들어 저장해줍니다.

s의 원소를 순회하며 pattern1나 pattern2와 다른 문자가 있다면 그 값을 ~altered에 저장해줍니다.

📔 정답 출력 | 반환

pattern1과 pattern2를 만들기 위해 바꾼 문자 수 중 최솟값을 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    string getFilpedPattern(int length, int mode) {
        int bit = mode;
        string pattern ="";
        while(length--) {
            pattern += to_string(bit);
            bit = !bit;
        }
        return pattern;
    }

    int minOperations(string s) {
        int pattern1Altered = 0, pattern2Altered = 0;
        int length = s.size();
        string pattern1 = getFilpedPattern(length, 0);
        string pattern2 = getFilpedPattern(length, 1);
        cout << pattern1 << ' ' << pattern2 << '\n';
        for(int i = 0; i < length; i++) {
            if(pattern1[i] != s[i]) pattern1Altered++;
            if(pattern2[i] != s[i]) pattern2Altered++;
        }
        return min(pattern1Altered, pattern2Altered);
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.