문제 이해
- 문자열에 하나의 문자를 추가함으로 인해서, subsequence를 최대화하라.
해결 전략
- 문자열을 순회하면서 첫번째 문자를 만날때마다, cnt1++을 한다.
- 문자열을 순회하면서 두번째 문자를 만날때마다, res에 cnt1을 더하고, cnt2++을 한다.
- 최종적으로 res에 cnt1과 cnt2중에 큰 값을 더해준다.
구현
class Solution {
public long maximumSubsequenceCount(String s, String pattern) {
long res = 0, cnt1 = 0, cnt2 = 0;
for (int i = 0; i < s.length(); ++i) {
if (s.charAt(i) == pattern.charAt(1)) {
res += cnt1;
cnt2++;
}
if (s.charAt(i) == pattern.charAt(0)) {
cnt1++;
}
}
return res + Math.max(cnt1, cnt2);
}
}
피드백
- 효율적이고 견고한 문제 해결 패턴을 내 것으로 만들고, 익히는 것이 중요하다.
'PS' 카테고리의 다른 글
Leetcode 203. Remove Linked List Elements (1) | 2022.04.26 |
---|---|
Leetcode 876. Middle of the Linked List (0) | 2022.04.25 |
Leetcode 2233. Maximum Product After K Increments (0) | 2022.04.24 |
Leetcode 2211. Count Collisions on a Road (0) | 2022.04.24 |
Leetcode 83. Remove Duplicates from Sorted List (0) | 2022.04.24 |