문제를 정리해 보자.
문제를 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한다.
각 문제를 칠할 때 아래와 같은 과정을 한 번의 작업으로 수행한다.
1. 연속된 임의의 문제들을 선택한다.
2. 선택된 문제들을 전부 원하는 같은 색으로 칠한다.
단순히 위에서 아래로 칠해보자.
횟수 | 번호 |
1 | 1,2 |
2 | 3 |
3 | 4 |
4 | 5 |
5 | 6,7 |
6 | 8 |
최소한의 작업 횟수로 수행해보자.
이를 구현해야 한다.
횟수 | 번호 |
1 | 1,2,3,4,5,6,7 |
2 | 3 |
3 | 5 |
4 | 8 |
어떻게 구현해야 할까? 아래 방법처럼 하면 된다.
(아래는 다른 예시이다.)
연속된 동일 알파벳은 하나의 알파벳으로 본다. 즉, 중복을 제거한다.
(중복이 제거되었기 때문에 R과 B가 교차로 있게 된다.)
R의 개수와 B의 개수 중, 더 큰 것은 한 번에 칠하고 더 작은 것은 하나씩 칠한다.
만약, R의 개수와 B의 개수가 동일하다면 어느 것을 선택해도 상관없다.
num = int(input())
tmp = ""
string = []
# 중복 덩어리 제거
for s in input():
if s != tmp:
string.append(s)
tmp = s
R = string.count("R")
B = string.count("B")
print(min(R, B) + 1)
'알고리즘 > 대회' 카테고리의 다른 글
[대회][BOJ][INU 코드페스티벌 2021] B번 23842 : 성냥개비 (0) | 2021.12.20 |
---|---|
[대회][BOJ][INU 코드페스티벌 2021] A번 23841 : 데칼코마니 (0) | 2021.12.20 |
[대회][BOJ][INU 코드페스티벌 2020] D번 20364 : 부동산 다툼 (0) | 2021.11.18 |
[대회][BOJ][INU 코드페스티벌 2020] C번 20363 : 당근 키우기 (0) | 2021.11.18 |
[대회][BOJ][INU 코드 페스티벌 2020] 후기 (0) | 2021.11.18 |