mun dev

[COS PRO 1급] 3-1 배열을 회전시켜보세요 자바(Java) 본문

알고리즘/COS PRO 1급

[COS PRO 1급] 3-1 배열을 회전시켜보세요 자바(Java)

mndev 2023. 11. 28. 17:36

문제링크

 

구름HOME

구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.

www.goorm.io

 

문제유형

빈 칸 채우기 문제

 

문제

class Main {
    int[] func_a(int[] arr) {
        int length = arr.length;
        int[] ret = new int[length*2];
        for(int i = 0; i < length; i++)
            ret[i + length] = ret[i] = arr[i];
        return ret;
    }
    
    boolean func_b(int[] first, int[] second){
        int[] counter = new int[1001];
        for(int i = 0; i < first.length; i++){
            counter[first[i]]++;
            counter[second[i]]--;
        }
        for(int i = 0; i < 1001; i++)
            if(counter[i] != 0)
                return false;
        return true;
    }
    
    boolean func_c(int[] first, int[] second){
    int length = second.length;
    for(int i = 0; i < length; i++){
        int j;
        for(j = 0; j < length; j++)
            if(first[i + j] != second[j])
                break;
        if(j == length)
            return true;
    }
    return false;
}

    public boolean solution(int[] arrA, int[] arrB) {
        if(arrA.length != arrB.length)
            return false;
        if(func_(_____)) {
            int[] arrAtemp = func_(_____);
            if(func_(_____);
                return true;
        }
        return false;
    }
 }

 

문제 풀이

class Main {
    int[] func_a(int[] arr) {
        int length = arr.length;
        int[] ret = new int[length*2];
        for(int i = 0; i < length; i++)
            ret[i + length] = ret[i] = arr[i];
        return ret;
    }
    
    boolean func_b(int[] first, int[] second){
        int[] counter = new int[1001];
        for(int i = 0; i < first.length; i++){
            counter[first[i]]++;
            counter[second[i]]--;
        }
        for(int i = 0; i < 1001; i++)
            if(counter[i] != 0)
                return false;
        return true;
    }
    
    boolean func_c(int[] first, int[] second){
    int length = second.length;
    for(int i = 0; i < length; i++){
        int j;
        for(j = 0; j < length; j++)
            if(first[i + j] != second[j])
                break;
        if(j == length)
            return true;
    }
    return false;
}

    public boolean solution(int[] arrA, int[] arrB) {
        if(arrA.length != arrB.length)
            return false;
        if(func_b(arrA, arrB)) {
            int[] arrAtemp = func_a(arrA);
            if(func_c(arrAtemp, arrB))
                return true;
        }
        return false;
    }
 }