백준 #1439 뒤집기
문제 설명👩🏫
예를 들어 S=0001100 일 때,
하지만, 처음부터 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로 문제를 푸는데 왜 길이가 이상하게 나오나.. 했었는데 어째저째 문제를 풀고 나서 찾아보니, 구별자로 시작하면 빈칸이 들어간다는 점을 알게되었다..!🤓