mun dev

[COS PRO 1급] 2-3 경품 당첨자를 구해주세요 자바(Java) 본문

알고리즘/COS PRO 1급

[COS PRO 1급] 2-3 경품 당첨자를 구해주세요 자바(Java)

mndev 2023. 11. 25. 17:37

문제링크

 

구름HOME

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

www.goorm.io

 

문제유형

빈 칸 채우기 문제

 

문제

class Main {
    public int func_a(int n){
        int ret = 1;
        while(n > 0){
            ret *= 10;
            n--;
        }
        return ret;
    }

    int func_b(int n){
        int ret = 0;
        while(n > 0){
            ret++;
            n /= 10;
        }
        return ret;
    }
    
    int func_c(int n){
        int ret = 0;
        while(n > 0){
            ret += n%10;
            n /= 10;
        }
        return ret;
    }
    
	public int solution(int num) {
        int nextNum = num;
        while(true){
            nextNum++;
            int length = func___(_____);
            if(length % 2 != 0)
                continue;

            int divisor = func___(_____);
            int front = nextNum / divisor;
            int back = nextNum % divisor;
            
            int frontSum = func___(_____);
            int backSum = func___(_____);
            if(frontSum == backSum)
                break;
        }
        return nextNum - num;
    }

 

문제 풀이

class Main {
    public int func_a(int n){
        int ret = 1;
        while(n > 0){
            ret *= 10;
            n--;
        }
        return ret;
    }

    int func_b(int n){
        int ret = 0;
        while(n > 0){
            ret++;
            n /= 10;
        }
        return ret;
    }
    
    int func_c(int n){
        int ret = 0;
        while(n > 0){
            ret += n%10;
            n /= 10;
        }
        return ret;
    }
    
	public int solution(int num) {
        int nextNum = num;
        while(true){
            nextNum++;
            int length = func_b(nextNum);
					 
            if(length % 2 != 0)
                continue;

            int divisor = func_a(length/2);
					
            int front = nextNum / divisor;
            int back = nextNum % divisor;
            
            int frontSum = func_c(front);
            int backSum = func_c(back);
           
	    if(frontSum == backSum)
                break;
        }
        return nextNum - num;
    }