2022년 1월 27일 목요일

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

CyclicRotation

 Rotate an array to the right by a given number of steps.

-배열을 주어진 숫자만큼 돌려서 원하는 값을 찾는다

-변경되어야 할 배열순사를 지켜야했음 

-내가 짠 코드

public static int[] solution(int[] A, int K) {

        // write your code in Java SE 8

        int[] result = new int[A.length];

        System.err.println("lenth = "+A.length);

        if(A.length == K){

            return A;

        }     

        

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

        result[(i+K) % A.length] = A[i];

        System.err.println("i = "+i+" = "+result[i]);

        }

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

System.err.println("a["+i+"] = " +result[i]);

}

        return result;

    }

--다른사람이 짠 코드

class Solution {
    public int[] solution(int[] A, int K) {
        // write your code in Java SE 8
        int len = A.length;
        if(len == 0 || K % len == 0) return A;
        int [] ans = new int [len];

        K = K % len;

        for (int i=0; i< len; i++){
            ans[(i+K) % len] = A[i];
        }
        return ans;
    }
}
역시 개깔끔...나는 멀었나보다
-swift 코드 
public func solution(_ A : inout [Int], _ K : Int) -> [Int] {
    // write your code in Swift 4.2.1 (Linux)
    
    if A.count == K{
        return A
    }
    var result = A
    for i in 0..<A.count{
        let num = (i+K)%A.count
        result[num] = A[i]
    }
    return result
}

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

}