알고리즘/백준

[파이썬, 자바] BOJ_1439(뒤집기)

딱따구르리 2021. 1. 28. 16:51
728x90
반응형

문제

 

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

 

1439번: 뒤집기

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

www.acmicpc.net


 

해설

 

이 문제는 예시를 먼저 보면 이해가 쉽다.

빨간색 = 변경 횟수, 파란색 = 앞 문자와 다른 문자 개수

 

앞 문자와 다른 문자의 개수(파란색)가 짝수일 때와 홀수일 때로 나눠 볼 수 있다.

 

짝수일 때는 파란색 // 2 = 빨간색 개수이지만

홀수일 때는 이게 성립하지 않는다.

 

그러나 짝수, 홀수 둘 다

(파란색 + 1) // 2 = 빨간색이 성립한다.

 

결국 문자가 몇 번 바뀌는지 수만 세서 위의 식대로 계산하면 끝난다.


코드

 

-파이썬

#백준 1439(뒤집기)

s = list(input())  #문자열
cnt = 0  #변경 횟수

for i in range(1, len(s)):
    if s[i] != s[i - 1]:
        cnt += 1

print((cnt + 1) // 2)

 

-자바

//백준 1439(뒤집기)
import java.util.*;
import java.io.*;

public class Boj_1439 {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		char[] s = br.readLine().toCharArray();  //문자열
		int cnt = 0;
		
		
		for(int i = 1; i < s.length; i++) {
			if(s[i] != s[i - 1]) {
				cnt ++;
			}
		}
		
		System.out.println((cnt + 1) / 2);
		
	}

}
728x90
반응형