백준 20365 - (Java) 블로그2
알고리즘/백준

백준 20365 - (Java) 블로그2

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

 

20365번: 블로그2

neighbor 블로그를 운영하는 일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올린다. 그리고 매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한

www.acmicpc.net

1. 유형

그리디

 

2. 문제 접근

 

아래와 같은 예시를 들어봅시다.

  • 연속하는 색끼리 묶음을 만듭니다. B 3, R 2개가 됩니다
  • 더 개수가 많은 것이 기준이 됩니다.
    •  B로 전체를 한번 색칠하고, R을 부분 색칠해주면 됩니다.
  • 그래서 B의 전체 색칠(1번) + R의 부분색칠(2번) = 3번이 정답이 됩니다.

3. 코드

import java.util.*;
import java.io.*;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(in.readLine());
		int N = stoi(st.nextToken());
		st = new StringTokenizer(in.readLine());
		String s = st.nextToken();
		int rcnt=0, bcnt=0;
		char arr[] = s.toCharArray();
		for(int i=0; i<arr.length; i++) {
			char c = arr[i];
			if(i==0) {
				if(c=='B') bcnt++;
				else rcnt++;
			}
			else {
				if(arr[i-1]==c) continue;
				else {
					if(c=='B') bcnt++;
					else rcnt++;
				}
			}
		}
		int ans = 0;
		if(rcnt>=bcnt)
			ans = bcnt+1;
		else
			ans = rcnt+1;
		System.out.println(ans);
	}

	static int stoi(String s) {
		return Integer.valueOf(s);
	}
}