[LeetCode] Minimum Changes To Make Alternating Binary String

아르당·2026년 6월 27일

LeetCode

목록 보기
376/571
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

오직 문자 '0'과 '1'로 구성된 문자열 s가 주어진다. 한 번의 연산으로 '0'을 1로 또는 그 반대로 바꿀 수 있다.

인접한 두 문자가 서로 같지 않으면 해당 문자열을 교대 문자열이라고 한다. 예를 들어 "010"은 교대 문자열이지만, "0100"은 교대 문자열이 아니다.

문자열 s를 교대 문자열로 만들기 위해 필요한 최소 연산 횟수를 반환해라.

Example

#1
Input: s = "0100"
Output: 1
Explanation: 만약 마지막 문자를 '1'로 바꾸면, s는 "0101"이 되고, 교대한다.

#2
Input: s = "10"
Output: 0
Explanation: s는 이미 교대한다.

#3
Input: s = "1111"
Output: 2
Explanation: "0101" 또는 "1010"으로 바꿀 수 있다.

Constraints

  • 1 <= s.length <= 10^4
  • s[i]는 '0' 또는 '1' 둘 중 하나이다.

Solved

class Solution {
    public int minOperations(String s) {
        int count = 0;
        int n = s.length();

        for(int i = 0; i < n; i++){
            count += (s.charAt(i) ^ i) & 1;
        }

        return Math.min(count, n - count);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글