https://www.acmicpc.net/problem/20365
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);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 15659 - (Java) 연산자 끼워넣기(3) (0) | 2021.08.26 |
---|---|
백준 2422 - (Java) 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (0) | 2021.08.25 |
백준 16926 - (Java) 배열 돌리기1 (0) | 2021.08.23 |
백준 15565 - (Java) 귀여운 라이언 (0) | 2021.08.22 |
백준 13902 - (Java)개업 2 (0) | 2021.08.21 |