[Lesson1/C++] Codility - BinaryGap

2025. 11. 29. 00:04·PS/LeetCode & Codility

코딜리티로 시험 준비해야 할 일이 있어서 lesson에 있는 문제를 살짝 풀어보다가

다른 코딩테스트 대비 플랫폼보다 히든케이스를 생각하는 부분이나,

시간 복잡도를 확인하는데 더 도움이 될 것 같아서 계속해서 풀어가고 있다!

 

lesson1은 Iterations을 주제로 가지고 있고, Easy 난이도의 문제가 하나 있다.


0. 문제

 

간단하게 요약하자면, 1로 시작하고, 1로 닫히는 비트 중에서,

1과 1사이에 있는 0의 개수가 가장 많을 때 그 개수를 출력하는 문제이다.

만약에 그런 경우가 없다면 0을 출력해야한다.


1. 문제풀이 및 코드

먼저 10진수로 주어지는 숫자를 이진수로 만들 필요가 있었다.

그리고 어차피 이진수가 0과 1이므로 그 이진수는 bool타입의 vector에 저장했다. 

그리고 여기서 reverse를 한 이유는 아래와 같이 이진수를 구하다보면, 가장 상위 비트가 아래로 내려가있기 때문이었다.

 

그리고 1로 시작하는지 안하는지를 start1이라는 플래그로 점검했다.

start1이 이미 true인 상태에서, binary[i]가 또 1이라면,

0의 개수를 세고 있던 cnt를 이용해서 answer를 업데이트하고,cnt를 초기화한다.

 

ex. 100010001을 예로 들자면, 중간에 빨간색 1을 마주치면,

다시 뒤에서 0 카운트를 시작해야하므로, 다시 cnt를 0으로 바꾸는 것이다.

 

#include <bits/stdc++.h>
//returns the length of its longest binary gap, 없다면 0출력
//이진수로 바꿔서, 1과1사이에 있는0의 개수를 세고, 최대 0의 개수를 출력하기
int solution(int N) {
    int answer = 0;
    vector<bool> binary;
    while(N>0){
        binary.push_back(N%2);
        N=N/2;
    }
    reverse(binary.begin(),binary.end());
    
    bool start1 = false;
    int cnt = 0;
    for (int i=0;i<(int)binary.size();++i){
        if (start1==false && binary[i]==1) start1=true;
        else{
            if (start1 && binary[i]==0) {
                cnt ++;
            }

            if (start1 && binary[i]==1){
                answer = max(answer,cnt);
                cnt=0; 
            }   
        }
    }
    return answer;
}
저작자표시 비영리 변경금지 (새창열림)

'PS > LeetCode & Codility' 카테고리의 다른 글

[String/C++] Leetcode _ First Unique Character in a String  (5) 2025.05.01
[Array/C++] Single Number & Intersection of Arrays II - HashMap  (0) 2025.04.25
[Array/C++] Rotate Array  (0) 2025.04.25
'PS/LeetCode & Codility' 카테고리의 다른 글
  • [String/C++] Leetcode _ First Unique Character in a String
  • [Array/C++] Single Number & Intersection of Arrays II - HashMap
  • [Array/C++] Rotate Array
Lyv
Lyv
  • Lyv
    inimizi
    Lyv
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 이것저것 도전 (5)
        • 공모전 (0)
        • 우테코 (5)
      • PS (16)
        • 삼성기출 (2)
        • LeetCode & Codility (4)
        • Programmers (6)
        • BaekJoon (4)
      • 공부기록 (33)
        • CS (16)
        • 영어 (1)
        • iOS (1)
        • 프로그래밍 언어 (0)
        • Web (4)
        • Linux (1)
        • Docker (2)
        • Network (4)
        • IaC (3)
      • 프로젝트 경험 (0)
      • DailyLog (4)
      • 취준Log (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프리코스회고
    manifest
    문제풀이
    c언어
    til
    공부기록
    스케줄링
    IAC
    대학생
    우테코
    ansible
    운영체제intro
    코테
    컨테이너
    DP
    FastAPI
    PS
    정처기
    운영체제
    os
    이미지
    자동화
    디자인패턴
    리눅스
    정처기실기
    프로그래머스
    우테코프리코스
    백준
    네트워크
    C++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Lyv
[Lesson1/C++] Codility - BinaryGap
상단으로

티스토리툴바