아이디어
이 문제는 결국 0 으로 통일할 것인가? 1로 통일할 것인가? 를 결정하는 문제다.
0 으로 통일하는 과정은 연속된 1로 이루어진 구역들을 각각 뒤집는 것이 최소 횟수이고
1 로 통일하는 과정은 연속된 0으로 이루어진 구역들을 각각 뒤집는 것이 최소 횟수이므로
입력으로 들어오는 문자열에서 연속된 0 으로 이루어진 구역의 갯수와 연속된 1로 이루어진 구역의 갯수를 세서 더 작은 값을 출력하면 된다.
풀이코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int len = input.length();
int district0 = 0;
int district1 = 0;
for (int i = 1; i < len; i++) {
if (input.charAt(i) != input.charAt(i - 1)) {
if (input.charAt(i - 1) == '0') {
district0++;
} else {
district1++;
}
}
}
if (input.charAt(len - 1) == '0') {
district0++;
} else {
district1++;
}
System.out.println(Math.min(district0, district1));
}
}
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
2635번. 수 이어가기 (0) | 2023.10.26 |
---|---|
16208번. 귀찮음 (0) | 2023.10.26 |
16956번. 늑대와 양 (0) | 2023.10.25 |
2670번. 연속부분최대곱 (0) | 2023.10.25 |
10026번. 적록색약 (1) | 2023.10.22 |