Algorithm

백준 1439번 <뒤집기>

seungh2 2021. 8. 20. 23:31

백준 알고리즘 1439번

https://www.acmicpc.net/problem/1439

 

1439번: 뒤집기

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모

www.acmicpc.net


1439번

0과 1로만 이루어진 문자열 S를 모두 같은 숫자로 만들려고 한다. 이때 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다.

 

입력으로 첫 줄에 문자열 S가 주어진다.

 

출력으로 문자열 S를 모두 같은 숫자로 만들 때, 해야하는 행동의 최소 횟수를 출력하면 된다.


문제 해결

입력으로 들어오는 문자열에서 1로 이루어진 부분 문자열과 0으로 이루어진 부분 문자열의 개수를 각각 구해서 그 중 작은 값 만큼 바꾸기 연산을 하면 된다. 


코드

python

data = input()
zero = 0
one = 0

if data[0] =='1':
    zero += 1
else:
    one +=1
for i in range(len(data)-1):
    if data[i] != data[i+1]:
        if data[i+1] == '1':
            zero += 1
        else:
            one+=1
print(min(one, zero))

 

java

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		String input = sc.next();
		int zero = 0;
		int one = 0;
		
		if(input.charAt(0)-'0' == 1) {
			zero ++;
		}else {
			one++;
		}
		
		for(int i = 0; i < input.length()-1; i++) {
			int a = input.charAt(i) -'0';
			int b = input.charAt(i+1)-'0';
			if(a != b) {
				if(a == 0) {
					zero++;
				}else {
					one++;
				}
			}
		}
		System.out.println(Math.min(zero, one));
	}

}

결과


 

728x90