https://www.acmicpc.net/problem/1439
1439, 뒤집기
이번 문제는 StringTokenizer 을 사용하면 너무나도 쉽게 풀 수 있다.
# Process
main
: 예제 입력 4번을 예시로 들어보자.
11001100110011000001
이 입력을 1과 0 으로 쪼개보면
11 00 11 00 11 00 11 00000 1
이렇게 표기할 수 있다.
1 은 {11, 11, 11, 11, 1} , 0은 {00, 00, 00. 00000} 으로 나눌 수 있다.
행동의 최소 횟수를 출력해야 하기 때문에 0 을 1로 뒤집는 횟수를 구하면 되기 때문에
즉, 답은 4가 된다.
그렇기 때문에 입력받은 문자열 S 를 StringTokenizer 로 0 과 1로 나눈 후, count 하면 쉽게 해결할 수 있다.
static String S;
static void input()
{
S = scan.nextLine();
}
static void pro()
{
int zero = 0, one = 0;
StringTokenizer oneCount = new StringTokenizer(S, "0");
one = oneCount.countTokens();
StringTokenizer zeroCount = new StringTokenizer(S, "1");
zero = zeroCount.countTokens();
System.out.println(Math.min(one,zero));
}
public static void main(String[] args)
{
input();
pro();
}
급하게 조사하고 정리하다보니 부족하거나 틀린 내용이 있을 수도 있는데 댓글로 달아주시면 감사하겠습니다!