한 칸씩 이동할 때마다 지금까지의 물음표들이 모두 L 혹은 R이라 가정하고 합계의 절대값을 이전 최대 거리와 비교한다.
C++ 풀이
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int T, sum, maxSum, qCount;
string s;
cin >> T;
for (int i = 0; i < T; i++) {
cin >> s;
sum = 0, maxSum = 0, qCount = 0;
for (int c = 0; c < s.length(); c++) {
if (s[c] == 'L') {
sum--;
}
else if (s[c] == 'R') {
sum++;
}
else if (s[c] == '?') {
qCount++;
}
maxSum = max(maxSum, max(abs(sum - qCount), abs(sum + qCount)));
}
cout << maxSum << endl;
}
return 0;
}
문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZVqPrHaAy_HBIOy
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[HackerRank] Exceptional Server (0) | 2022.03.08 |
---|---|
[HackerRank] Inherited Code (0) | 2022.03.08 |
[LeetCode] Two Sum (0) | 2022.02.25 |
[SWEA 1954] 달팽이 숫자 (0) | 2022.02.13 |
[프로그래머스] n^2 배열 자르기 (0) | 2021.12.23 |