문제 출처:https://leetcode.com/problems/student-attendance-record-i/
이 문제는 A, L, P로 출결을 관리하여 출석상을 받을 수 있는지를 출력하면 됩니다. A는 결석, L은 지각, P는 출석입니다.
결석은 2번 이상하면 안되며, 지각은 연속 3번하면 안됩니다. 문제를 풀다가 의야한 점이 있었는데 지각 + 결석 + 지각 + 지각인 경우 왠만하면 지각 3연속으로 칠 것 같은데 여기서는 그렇지 않았다는 것이다. 이것만 잘 넘기면 크게 문제될 만한 부분은 없었다.
코드는 다음과 같습니다:
class Solution {
public:
bool checkRecord(string s) {
int cnt_A = 0, stack_L = 0 ;
for(auto attendance : s){
if(1 < cnt_A || 2 < stack_L)
return false ;
switch(attendance){
case 'A': cnt_A += 1 ; stack_L = 0 ; break ;
case 'L': stack_L += 1 ; break ;
case 'P': stack_L = 0 ; break ;
}
}
if(1 < cnt_A || 2 < stack_L)
return false ;
return true ;
}
};
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/LeetCode/P551_Student_Attendance_Record_I.cpp
훈수 및 조언은 언제든 환영입니다.