[LeetCode] 3208. Alternating Groups II (Python)

2025. 3. 9. 14:06·코딩 테스트
728x90

Problem

 

Solution

sliding window

 

처음에 구현으로 2중 포문 돌렸다가 time limit exceeded 났던 문제.

이 문제도 똑같이 sliding window 기법으로 풀어야된다.

원형 배열이라서 colors[: k-1]개만큼 기존 배열에 더해준다.

그리고 이전 원소와 값을 비교하며 (index 범위는 1 부터 시작) count 를 증가한다.

count가 k 이상이면 조건을 만족하므로 answer ++

만족하지않으면 count = 1 로 초기화하여 다시 리셋해준다.

 

Code

class Solution:
    def numberOfAlternatingGroups(self, colors: List[int], k: int) -> int:
        n = len(colors)                # 색상 배열의 길이를 구합니다.
        colors += colors[:k - 1]       # 색상 배열을 원형 배열처럼 만들어줍니다. 첫 번째 원소에서 k-1 개의 원소를 추가합니다.
        answer = 0                         # 교차 그룹의 개수를 저장할 변수 초기화
        cnt = 1                         # 현재 그룹의 길이를 추적하는 변수 초기화
        for i in range(1, len(colors)):    # 색상 배열의 두 번째 원소부터 끝까지 순회
            if colors[i] != colors[i - 1]: # 현재 원소와 이전 원소가 다르면
                cnt += 1                   # 그룹 길이를 증가시킴
            else:                           # 현재 원소와 이전 원소가 같으면
                cnt = 1                    # 새로운 그룹 시작, 길이를 1로 초기화
            
            if cnt >= k:                    # 그룹 길이가 k 이상이면
                answer += 1                    # 교차 그룹의 개수를 1 증가시킴

        return answer



 

Complexity

Time Complexity

배열을 (n+k-1)만큼 순회하므로  O(N)

 

Space Complexity
새로만든 배열의 길이가 n+k-1 이므로 O(N+K)

728x90
저작자표시 비영리 변경금지 (새창열림)

'코딩 테스트' 카테고리의 다른 글

[LeetCode] 3191. Minimum Operations to Make Binary Array Elements Equal to One I (Python)  (0) 2025.03.19
[LeetCode] 2379. Minimum Recolors to Get K Consecutive Black Blocks (Python)  (0) 2025.03.08
[LeetCode] 2965. Find Missing and Repeated Values (Python)  (0) 2025.03.06
[LeetCode] 1092. Shortest Common Supersequence (Python)  (0) 2025.02.28
[LeetCode] 873. Length of Longest Fibonacci Subsequence (Python)  (0) 2025.02.27
'코딩 테스트' 카테고리의 다른 글
  • [LeetCode] 3191. Minimum Operations to Make Binary Array Elements Equal to One I (Python)
  • [LeetCode] 2379. Minimum Recolors to Get K Consecutive Black Blocks (Python)
  • [LeetCode] 2965. Find Missing and Repeated Values (Python)
  • [LeetCode] 1092. Shortest Common Supersequence (Python)
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    kafka
    스프링
    pythoncodingtest
    쿠버네티스
    알고리즘
    LeetCode
    Kotlin
    codility
    스프링부트
    리트코드
    springboot
    Spring
    코딩
    db
    네트워크
    카카오코테
    코딩테스트
    CodingTest
    프로그래머스
    자료구조
    자바
    MySQL
    코딜리티
    금융용어
    이분탐색
    Python
    java
    코테
    코테공부
    C++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[LeetCode] 3208. Alternating Groups II (Python)
상단으로

티스토리툴바