반응형
https://leetcode.com/problems/detect-pattern-of-length-m-repeated-k-or-more-times/description/
전수조사 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
연속된 pattern 개수 patternCount 선언 후 0으로 초기화해줍니다.
📔 풀이과정
시작점 start부터 arr.size() - 1까지 loop를 수행하며 다음을 진행합니다.
1. start ~ m-1까지 구간을 한 pattern으로 정하고 m만큼 건너뛰면서 for loop를 수행해 매 start+m+i ~ start+m*2-1 + i 구간별 pattern이 맞는지 확인하는 isPattern함수를 수행합니다.
2. pattern이 맞으면 patternCount를 1씩 증가시켜줍니다. 연속적이지 않다면 바로 loop를 탈출해줍니다.
📔 정답 출력 | 반환
patternCount가 k이상이면 true를, 아니면 false를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
bool isPattern(vector<int>&arr, int start, int m) {
for (int s = start; s < start + m; s++) {
if (s >= arr.size() || arr[s-m] != arr[s]) return false;
}
return true;
}
bool containsPattern(vector<int>& arr, int m, int k) {
int patternCount = 0;
for(int start = 0; start < arr.size(); start++) {
patternCount = 1;
for(int i = start+m; i < arr.size(); i+=m) {
if(isPattern(arr, i, m)) {
patternCount++;
} else {
break;
}
}
if(patternCount >= k) {
return true;
}
}
return false;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Brute Force' 카테고리의 다른 글
(C++) - LeetCode (easy) 1588. Sum of All Odd Length Subarrays (0) | 2024.05.04 |
---|---|
(C++) - LeetCode (easy) 1582. Special Positions in a Binary Matrix (0) | 2024.05.01 |
(C++) - LeetCode (easy) 1534. Count Good Triplets (0) | 2024.04.22 |
(C++) - LeetCode (easy) 1464. Maximum Product of Two Elements in an Array (0) | 2024.03.28 |
(C++) - LeetCode (easy) 1436. Destination City (0) | 2024.03.19 |