728x90
반응형
문제 풀기 전 생각 :
입력 받은 s를 에 A가 몇개 있는지 카운팅해보고
연속해서 L 이 3번 이상 등장 한 적이 있는지 판별하는 방법으로
문자열을 쪼개는 방법을 사용했다.
반복문 안에 조건문으로 판별했는데
코드를 다 짜고 보니 L의 갯수를 세는 것보다 LLL아 문자열 안에 있는지 판별하면
더 효율적일거 같다는 생각을 했습니다.
그래서 다시 풀었죠.
class Solution {
public:
bool checkRecord(string s) {
int late = 0;
int absent = 0;
for(int i=0 ; i<s.length() ; i++){
if(s[i] == 'L') late++;
else if(s[i] == 'A'){
absent++;
late = 0;
}
else if(s[i] == 'P') late = 0;
if(late >= 3)
return false;
}
return (absent < 2);
}
};
//1차 풀이 여기서 개선 할 수 있는 방법을 떠올림
class Solution {
public:
bool checkRecord(string s) {
if(s.find("LLL") != string::npos) return false;
int absent = 0;
for(int i=0 ; i<s.length() ; i++)
if(s[i] == 'A') absent++;
return (absent < 2);
}
};
//두번째 시도
https://leetcode.com/problems/student-attendance-record-i/
풀 때 어려웠던 점 또는 느낀점 :
같은 문제여도 푸는 방법에 차이가 있고
처음에 생각한 방법이 가장 효율적이라고 생각했지만
몇분 후 다시 생각하면 더 좋은 방법이 생각나는 것을 보며
문제를 바라볼때 넓은 시야를 가지고 바라봐야 겠다는 생각을 했습니다.
LLL이 문자열 안에 있는지 판별하는 것과
L의 갯수를 세보며 3이 되었던 적이 있는 판별하는 것은 너무나 비효율 적입니다.
728x90
반응형
'Problem Solving' 카테고리의 다른 글
[C++] [백준 5598] 카이사르 암호 (pps 3-3) (0) | 2021.07.13 |
---|---|
[C++] [백준 11721] 열 개씩 끊어 출력하기 (pps 3-2) (0) | 2021.07.13 |
2-10. ZigZag Conversion (LeetCode 6) (0) | 2021.07.09 |
2-9. Repeated String Match (LeetCode 686) (0) | 2021.07.08 |
2-8. IBM 빼기 1 (백준 6321) (2) | 2021.07.08 |
댓글