[2024] day 215. 2678. Number of Senior Citizens

gunny·2024년 8월 2일
0

코딩테스트

목록 보기
525/530

2024년부터 새롭게 다시 시작하는 코딩테스트

2024년 8월 1일 (목)
Leetcode daily problem

2678. Number of Senior Citizens

https://leetcode.com/problems/number-of-senior-citizens/?envType=daily-question&envId=2024-08-01

Problem

문자열 details의 배열이 주어지는데, details의 각 요소는 주어진 승객에 대한 정보를 길이 15의 문자열로 압축하여 제공한 것이다.

이 시스템은 다음과 같다.

  • 처음 10자는 승객의 전화번호로 구성됩니다.
  • 다음 문자는 사람의 성별을 나타냅니다.
  • 다음 두 문자는 사람의 나이를 나타내는 데 사용됩니다.
  • 마지막 두 문자는 해당 사람에게 할당된 좌석을 결정합니다.

주어진 배열에서 60세가 넘은 승객의 수를 반환한다.

Solution

string parsing

단순하게 배열에 있는 문자열을 순회하면서 아래의 특정 조건을 만족하는지 확인한다. 문자열의 12번째와 13번째 문자를 잘라내어 이를 정수로 변환하고, 이 값이 60보다 큰지 검사하고 맞으면 만족한다고 생각하고 값을 업데이트 한다. 이 조건을 만족하는 항목의 개수를 세어 결과를 반환한다.

Code

class Solution:
    def countSeniors(self, details: List[str]) -> int:
        ans = sum(1 for detail in details if int(detail[11:13]) > 60)
        return ans

Complexicity

시간 복잡도

주어진 details 의 배열을 한 번씩 순회하므로 O(n)이 소요되고, 해당 배열에서 12번째와 13번째 문자열을 확인하기 위해서 슬라이싱 후에 정수로 변환하는 작업을 수행한다. 문자열 추출 및 정수 변환은 O(1)이 소요된다.

즉, 전체 시간 복잡도는 O(n)이다.

공간 복잡도

ans에 조건에 해당하는 수를 더해가므로 공간복잡도는 상수 크기 만큼이 필요하다. 전체 공간 복잡도는 O(1) 이다.

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글