反転文字列(Java)


質問する


リンク

に答える


文字列Sの連続する0と1のブロック数を把握するのは簡単だと思います.
  • 連続の0ブロック数と1ブロック数の最大値を求める.
  • コード#コード#

    import java.util.*;
    import java.io.*;
    
    // BOJ 1439
    public class Main {
    
        static int answer = 0;
    
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String S = br.readLine();
            char[] cArr = S.toCharArray();
    
            int zeroCnt = 0;    // 0 덩어리 개수
            int oneCnt = 0;     // 1 덩어리 개수
    
            for (int i = 0; i < cArr.length - 1; i++) {
                if (cArr[i] == '0') {
                    if (cArr[i] != cArr[i + 1]) {
                        zeroCnt++;
                    }
                } else if (cArr[i] == '1') {
                    if (cArr[i] != cArr[i + 1]) {
                        oneCnt++;
                    }
                }
            }
    
            if (cArr[cArr.length - 1] == '0') {
                zeroCnt++;
            } else if(cArr[cArr.length - 1] == '1') {
                oneCnt++;
            }
    
    //        System.out.println(zeroCnt + " " + oneCnt);
            answer = Math.min(zeroCnt, oneCnt);
            System.out.println(answer);
    
        }
    }