2024년 8월 1일 (목)
Leetcode daily problem
https://leetcode.com/problems/number-of-senior-citizens/?envType=daily-question&envId=2024-08-01
문자열 details의 배열이 주어지는데, details의 각 요소는 주어진 승객에 대한 정보를 길이 15의 문자열로 압축하여 제공한 것이다.
이 시스템은 다음과 같다.
주어진 배열에서 60세가 넘은 승객의 수를 반환한다.
string parsing
단순하게 배열에 있는 문자열을 순회하면서 아래의 특정 조건을 만족하는지 확인한다. 문자열의 12번째와 13번째 문자를 잘라내어 이를 정수로 변환하고, 이 값이 60보다 큰지 검사하고 맞으면 만족한다고 생각하고 값을 업데이트 한다. 이 조건을 만족하는 항목의 개수를 세어 결과를 반환한다.
class Solution:
def countSeniors(self, details: List[str]) -> int:
ans = sum(1 for detail in details if int(detail[11:13]) > 60)
return ans
시간 복잡도
주어진 details 의 배열을 한 번씩 순회하므로 O(n)이 소요되고, 해당 배열에서 12번째와 13번째 문자열을 확인하기 위해서 슬라이싱 후에 정수로 변환하는 작업을 수행한다. 문자열 추출 및 정수 변환은 O(1)이 소요된다.
즉, 전체 시간 복잡도는 O(n)이다.
공간 복잡도
ans에 조건에 해당하는 수를 더해가므로 공간복잡도는 상수 크기 만큼이 필요하다. 전체 공간 복잡도는 O(1) 이다.