본문 바로가기
Problem Solving

3-1. Student Attendance Record I (LeetCode 551)

by tls1107 2021. 7. 10.
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/

 

Student Attendance Record I - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

풀 때 어려웠던 점 또는 느낀점 :

같은 문제여도 푸는 방법에 차이가 있고

처음에 생각한 방법이 가장 효율적이라고 생각했지만

몇분 후 다시 생각하면 더 좋은 방법이 생각나는 것을 보며

문제를 바라볼때 넓은 시야를 가지고 바라봐야 겠다는 생각을 했습니다.

LLL이 문자열 안에 있는지 판별하는 것과

L의 갯수를 세보며 3이 되었던 적이 있는 판별하는 것은 너무나 비효율 적입니다.

728x90
반응형

댓글