[백준 #1439] 뒤집기

Yujjin·2025년 2월 8일

백준

목록 보기
16/20
post-thumbnail

백준 #1439 뒤집기

백준 #1439


문제 설명👩‍🏫

예를 들어 S=0001100 일 때,

  1. 전체를 뒤집으면 1110011이 된다.
  2. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다.

하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다.

최소 횟수를 구해라.

입출력 예

입력
11001100110011000001

출력
4


내 코드💻

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();

        String start = str.substring(0,1);
        String [] arr0 = str.split("1+");
        String [] arr1 = str.split("0+");
        if(arr0.length == 0 || arr1.length == 0) {
            System.out.println("0");
        }
        else{
            if(start.equals("0")){
                System.out.println(Math.min(arr0.length, arr1.length - 1));
            }
            else{
                System.out.println(Math.min(arr0.length-1, arr1.length));
            }
        }
    }
}

설명💡

0과 1로 이루어진 각각의 문자열이 몇 개인지 세고, 그 문자열의 개수가 적은 쪽이 답이 된다.


split로 나눴는데, split의 문제점(?)은 문자열이 구별자로 시작한다면 처음에 빈 문자열이 배열에 들어가게 된다는 점이다. 그래서 처음 시작인 문자에 따라서 길이를 조절하는 부분이 필요하다.


느낀 점 및 궁금한 점🍀

처음에는 split로 문제를 푸는데 왜 길이가 이상하게 나오나.. 했었는데 어째저째 문제를 풀고 나서 찾아보니, 구별자로 시작하면 빈칸이 들어간다는 점을 알게되었다..!🤓

0개의 댓글