[백준/BOJ] 백준 15831번 : 준표의 조약돌
2022. 2. 5. 17:09ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/15831
투 포인터를 이용하여 두 개의 돌의 조건을 확인해서 문제를 해결했다
코드
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int n, b, w;
string stone;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n >> b >> w;
cin >> stone;
int left = 0;
int right = 0;
int b_sum = 0;
int w_sum = 0;
int result = 0;
while (1)
{
if (b_sum <= b && w_sum >= w)
result = max(result, right - left);
if (right >= n)
break;
if (stone[right] == 'B')
{
//right를 주우면 b값 초과가 될때
if (b_sum + 1 > b)
{
//right를 줍지 않고 left를 옮긴다
if (stone[left] == 'B')
b_sum--;
else
w_sum--;
left++;
}
//right를 주워도 b값 이하일때
else
{
b_sum++;
right++;
}
}
else
{
w_sum++;
right++;
}
}
cout << result;
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 1866번 : 택배 (0) | 2022.02.06 |
---|---|
[백준/BOJ] 백준 1747번 : 소수&팰린드롬 (0) | 2022.02.05 |
[백준/BOJ] 백준 1800번 : 인터넷 설치 (0) | 2022.02.05 |
[백준/BOJ] 백준 11658번 : 구간 합 구하기 3 (0) | 2022.02.05 |
[백준/BOJ] 백준 2239번 : 스도쿠 (0) | 2022.02.05 |