알고리즘/백준

1439번 : 뒤집기

코딍코딍 2022. 6. 26. 14:36

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

 

1439번: 뒤집기

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

www.acmicpc.net

 

 

문제

 

 

코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.nextLine();
		int n=0;
		
		for(int i=0;i<s.length()-1;i++) {
			if(s.charAt(i) != s.charAt(i+1))
				n++;
		}
		
		if(n%2==0) n/=2;
		else n=(n/2)+1;
		System.out.print(n);
	}
}

 

 

해결방법

메모장에 몇 가지 문자열을 만들어서 규칙을 생각해본다면 한 문자열에서 0=>1, 1=>0 으로 바뀐 개수가 짝수개인 경우 n/2, 바뀐 개수가 홀수개인 경우 (n/2)+1한 값이 행동의 최소 횟수가 된다.

 

1111 => n=0 => 최소 횟수= 0/2 = 0
10 => n=1 => 최소 횟수= (1/2)+1 = 1
1010 => n=3 => 최소 횟수= (3/2)+1 = 2
110011 => n=2 => 최소 횟수= 2/2 =1
10101010 => n=7 => 최소 횟수= (7/2)+1 = 4
101010101 => n=8 => 최소 횟수= 8/2 = 4