티스토리 뷰
풀이 생각 과정
red count 와 blue count를 지정해줘서 카운터를 올려줘야 하는데,
같은 색깔만 이동할수 있다고 했으니 색이 다르면 break 하고
start 카운터와 end카운터 각각 지정한 다음
반복문 증가순회할때 start증가, 그리고 감소순회할때 end증가 하는식으로 가면 됨.
코드
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int n;
string arr;
cin >> n >> arr;
int red = 0, blue = 0;
int rs = 0, bs = 0, re = 0, be = 0;
for (int i = 0; i < n; ++i) {
if (arr[i] == 'R') red++;
else blue++;
}
for (int i = 0; i < n; ++i) {
if (i == 0) {
if (arr[i] == 'R') rs = 1;
else bs = 1;
} else if (arr[i] != arr[i - 1]) {
break;
} else {
if (arr[i] == 'R') rs++;
else bs++;
}
}
for (int i = n - 1; i >= 0; --i) {
if (i == n - 1) {
if (arr[i] == 'R') re = 1;
else be = 1;
} else if (arr[i] != arr[i + 1]) {
break;
} else {
if (arr[i] == 'R') re++;
else be++;
}
}
// 최소 이동 횟수 계산
int val = red - rs;
val = min(val, red - re);
val = min(val, blue - bs);
val = min(val, blue - be);
// 결과 출력
cout << val << endl;
return 0;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 15654
- 문자사각형
- 2604
- 24954
- 몇번째조합
- 숫자사각형3
- 1438
- 문자열찾기
- 15650
- N과M
- 볼모으기
- 백준
- 색종이(초)
- 1338
- 세로읽기
- 연필공장
- 15651
- 1304
- 3427
- 1535
- 볼 모으기
- 문자삼각형1
- 5545
- 2857
- 8129
- 색종이(중)
- 단어집합2
- 정올
- 트리 순회
- 15652
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함