반응형
<문제 분석>
모든 숫자를 전부 같게 만드는 것이 목적이다. 따라서 전부 0으로 바꾸는 경우와 전부 1로 바꾸는 경우 중 더 적은 횟수를 가지는 경우를 구하면 된다.
<풀이>
- 모두 0으로 만드는 경우
- 모두 1로 만드는 경우
- 두번째 숫자부터 그 다음 숫자랑 비교를 해서 수가 달라지면 count를 증가시킨다.
import java.util.Scanner;
// [이코테](그리디) 03. 문자열 뒤집기
public class Main {
static int A[];
static int count0 = 0; // 전부 0으로 바꾸는 경우
static int count1 = 0; // 전부 1로 바꾸는 경우
public void InputData() {
Scanner sc = new Scanner(System.in);
String s = sc.next();
A = new int[s.length()];
for (int i=0; i<s.length(); i++) {
A[i] = s.charAt(i) - '0';
}
}
public void Solve() {
// 첫번째 원소에 대한 처리(!)
if (A[0] == 1) {
count0++;
} else {
count1++;
}
// 두번째 원소부터 모든 원소를 확인
for (int i=1; i<A.length-1; i++) {
if (A[i] != A[i+1]) { // 다음 원소가 다를 경우
// 다음 수가 1이면 0으로 바뀐다.
if (A[i+1] == 1)
count0++;
else // 다음 수가 0이면 1로 바뀐다.
count1++;
}
}
System.out.println(Math.min(count0, count1));
}
public static void main (String[] args)
{
Main m = new Main();
m.InputData();
m.Solve();
}
}
반응형
'알고리즘 PS > 이것이 코딩 테스트다' 카테고리의 다른 글
[이코테][기출] 05. 볼링공 고르기 (0) | 2022.10.18 |
---|---|
[이코테][기출] 04. 만들 수 없는 금액 (0) | 2022.10.18 |
[이코테][기출] 02. 곱하기 혹은 더하기 (0) | 2022.10.18 |
댓글