문제 : boj1439
아래 에미지에서 첫줄 '11'을 바꿈으로써 그 양옆 '00'들을 한꺼번에 바꿀 수 있는 것 처럼 중간에 있는 무언가를 바꾼다면, 그 다음 더 넓은 지역을 바꾸는데 도움이 된다고 생각할 수 있다. 그래서 어떻게 생각할 지 어렵게 여겨질 수 있다. 하지만 이러한 경우에 어떻게 하든 결국 중간중간 바꾼 것과, 모든 연속된 1 토큰을 0으로 바꾸거나 모든 연속된 0 토큰을 1로 바꾸는 것 중 작은쪽은 횟수가 똑같다.
무슨 말이냐면 그냥 아래와 같이 연속된 1로 구성된 토큰의 개수와, 연속된 0으로 구성된 토큰의 개수 중 작은쪽을 출력하면 끝나는 아주 간단한 문제라는 얘기이다. (만약 '11111' 이런식이었다면 0으로 된 토큰이 0일 것이므로 0이 답)
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
StringTokenizer st1 = new StringTokenizer(s, "0");
StringTokenizer st0 = new StringTokenizer(s, "1");
System.out.println(Math.min(st1.countTokens(), st0.countTokens()));
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
백준 15992 자바 - 1, 2, 3 더하기 7 (BOJ 15992 JAVA) (0) | 2022.02.02 |
---|---|
백준 20126 자바 - 교수님의 기말고사 (BOJ 20126 JAVA) (0) | 2022.02.01 |
백준 18242 자바 - 네모네모 시력검사 (BOJ 18242 JAVA) (0) | 2022.01.30 |
백준 11609 자바 - Class Time (BOJ 11609 JAVA) (0) | 2022.01.29 |
백준 15922 자바 - 아우으 우아으이야!! (BOJ 15922 JAVA) (0) | 2022.01.28 |
댓글