LeetCode 문제 중 난이도 Easy인 Student Attendance Record I이다. 문제 링크는 포스팅의 맨 마지막에 추가하였다. 언어는 Java를 사용했다
문제해석
학생의 출석기록을 의미하는 String을 입력으로 받는다. 출석기록은 3가지 문자로만 이루어져 있다
A : 결석
L : 지각
P : 출석
결석이 한번을 넘거나 연속으로 두번 넘게 지각하는 경우가 없어야만 상을 받는다. 해당 학생이 상을 받을 수 있는지 없는지 리턴하라.
이 문제는 정규식을 이용해 1줄의 코드로 풀 수 있다. 정규식에 대해 잘 모른다면 아래 포스팅을 참고하자. {n}은 n번 반복이라는 뜻이다.
2019/03/30 - [프로그래밍문제풀기] - JAVA 정규표현식 (Regular expression)
1 2 3 4 5 6 | class Solution { public boolean checkRecord(String s) { return !s.matches(".*A.*A.*|.*L{3}.*"); } } | cs |
두번째 방법은 배열을 탐색하면서 A가 1번을 넘는지, L이 2번 넘게 연속인지 확인하는 것이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Solution { public boolean checkRecord(String s) { int absent=0; int continuousLate=0; for(char c : s.toCharArray()) { if(c=='A') absent++; if(c=='L') continuousLate++; else continuousLate=0; if( absent>1 || continuousLate>2 ) return false; } return true; } } | cs |
'코딩문제(LeetCode) > Easy' 카테고리의 다른 글
[코딩연습] Flipping an Image 이미지 뒤집기 (0) | 2019.05.22 |
---|---|
[코딩연습] LeetCode Lemonade Change 거스름돈 나눠주기 (0) | 2019.05.12 |
[코딩연습] Remove Outermost Parentheses 바깥 괄호 제거하기 (0) | 2019.05.05 |
[코딩연습] Arranging Coins 동전 배열하기 (0) | 2019.04.26 |
[코딩연습] Move Zeroes 0을 뒤로 밀기 (0) | 2019.04.25 |