2022년 1월 25일 화요일

Codility - 코딩테스트 기록용 1일차

 BinaryGap

Find longest sequence of zeros in binary representation of an integer.

이진법으로 변환 후 1과 1사이의 0의 값을 추출한다.

내가 푼 방법 

public static int solution(int N) {

        // write your code in Java SE 8

String binary = Integer.toBinaryString(N);

List<Integer> aArray = new ArrayList();

int result = 0;

for (int i = 0; i < binary.length(); i++) {

if(binary.charAt(i) == '1') {

aArray.add(i);

}

}

int max = 0;

int val = 0;

for (int i = 0; i < aArray.size() -1; i++) {

if(i == 0) {

max = binary.substring(aArray.get(i), aArray.get(i+1)).length() -1;

}else {

val = binary.substring(aArray.get(i), aArray.get(i+1)).length() -1;

}

if(i > 0) {

max = Integer.max(max, val);

}

}

if(aArray.size() < 2) {

max = 0;

}

return max;

    }


-> 다른 사람이 푼 코드 

class Solution {
    public int solution(int N) {
        // write your code in Java SE 8

        String binaryNum = Integer.toBinaryString(N);
        int temp = 0;
        int maxLen = temp;

        for(int i=1; i< binaryNum.length(); i++){
            if(binaryNum.charAt(i) == '0') temp++;
            else{
                maxLen = Math.max(maxLen, temp);
                temp = 0; 
            }
        }
        return maxLen;
    }
}
개깔끔.. 왜 저생각을 못했지.. 분발하자!

SWIFT 버전

public func solution(_ N: Int) ->Int{

    var result = 0

    let binary = String(N, radix: 2, uppercase: true)

    var tmp = 0;

    for char in binary {

        if char == "0"{

            tmp += 1

        }else{

            result = max(result, tmp)

            tmp = 0

        }

    }

    return result

}


댓글 없음:

댓글 쓰기