본문 바로가기

Algorithm/String

(C++) - LeetCode (easy) 868. Binary Gap

반응형

https://leetcode.com/problems/binary-gap/description/

 

Binary Gap - LeetCode

Can you solve this real interview question? Binary Gap - Given a positive integer n, find and return the longest distance between any two adjacent 1's in the binary representation of n. If there are no two adjacent 1's, return 0. Two 1's are adjacent if th

leetcode.com

이진법 변환 구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. 이진법으로 변환해 문자열 변수 s에 저장해줍니다.2. 1인 부분의 index를 vector idxs를 선언해 저장해줍니다.

📔 풀이과정

1. 거리 비교할 idxs의 크기가 2보다 작다면 0을 반환합니다.2. 인접한 idxs의 원소끼리의 거리를 구해 dist의 최댓값을 저장합니다.

📔 정답 출력 | 반환

dist를 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    string getString(int n) {
        string bin;
        while(n) {
            bin += to_string(n % 2);
            n /= 2;
        }
        reverse(bin.begin(), bin.end());
        return bin;
    }

    int binaryGap(int n) {
        string s = getString(n);
        vector <int> idxs;
        int dist = 0;
        for(int i = 0; i < s.size(); i++) {
            if(s[i] == '1') {
                idxs.push_back(i);
            }
        }
        if(idxs.size() < 2) return 0;
        for(int i = 1; i < idxs.size(); i++) {
            dist = max(dist, idxs[i] - idxs[i-1]);
        }
        return dist;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.