[LeetCode] 3191. Minimum Operations to Make Binary Array Elements Equal to One I (Python)

2025. 3. 19. 22:59·코딩 테스트
728x90

Problem

 

Solution

sliding window

 

연속된 3개 숫자를 뒤집어서 모두 1로 바꿀 수 있는 최소한의 횟수를 구하는 문제.

당연히 2중포문을 쓰면 시간초과가 발생한다.

n-2까지만 검사해서 nums[i] == 0 이면 i ~ i+2까지 비트연산으로 1, 0을 뒤집는다.

연산이 끝나면 answer+=1

비트연산 파이선으로 ^= 이더라? 괜히 if~else 구문으로 바꾸고있었네

 

마지막에 2개숫자가 0이면 연속된 3자리가 아니라 못바꾸므로 바로 리턴 -1

아니면 answer return

 

Code

class Solution:
    def minOperations(self, nums: List[int]) -> int:
        n = len(nums)
        ans = 0
        for i in range(n - 2):
            if nums[i] == 0:
                nums[i + 1] ^= 1
                nums[i + 2] ^= 1
                ans += 1
        #마지막 2자리가 0이면 못바꿈
        if nums[-1] == 0 or nums[-2] == 0:
            return -1
        return ans



마지막에 또는 한줄로 이렇게 해도된다.

return res if nums[-1] == 1 and nums[-2] == 1 else -1

 

Complexity

Time Complexity

O(n) - 배열을 한 번 순회함

 

Space Complexity

O(1) - 입력 배열 외 추가 공간 사용 없음

 

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

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

[LeetCode] 3208. Alternating Groups II (Python)  (0) 2025.03.09
[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] 3208. Alternating Groups II (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
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[LeetCode] 3191. Minimum Operations to Make Binary Array Elements Equal to One I (Python)
상단으로

티스토리툴바