프로그래머스 문제풀이/알고리즘 (JAVA)

[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (6~9번 문제풀이)

남건욱 2023. 6. 7. 20:31
반응형
6. 몫 구하기

문제

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if((num1 > 0 && num1 <=100) && (num2 > 0 && num2 <=100)){
            answer = num1 / num2;
        }
        return answer;
    }
}

<작성한 코드>

num1, num2의 범위를 우선적으로 설정해주었고 만족시 answer에 몫을 집어넣고 리턴해주었다.

 

 

 

 

 

 

 

7. 두 수의 나눗셈

문제

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        double result;
        
        if((num1 > 0 && num1 <= 100) && (num2 > 0 && num2 <= 100)){
            result = (double)num1 / num2;
            answer = (int)(result * 1000);
        }
        
        return answer;
    }
}

<작성한 코드>

num1, num2의 범위를 지정해주었고, 먼저 double형 변수 result에 num1/num2 를 한 몫을 double형으로 저장해줬다. 그 후 answer에 다시 result에 1000을 곱한값을 정수형으로 대입해주고 리턴해주었다.

 

 

 

 

 

 

 

 

 

8. 숫자 비교하기

문제

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if((num1 >= 0 && num1 <= 10000) && (num2 >= 0 && num2 <= 10000)){
            if(num1 == num2){
                answer = 1;
            } else {
                answer = -1;
            }
        }
        return answer;
    }
}

<작성한 코드>

num1, num2의 범위를 먼저 지정해주었다. 그 후 num1과 num2가 같은수면 answer에 1대입, 다르면 answer에 -1 대입을하고 answer값을 리턴해주었다.

 

 

 

 

 

 

 

 

9. 분수의 덧셈

문제

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int[] answer = new int[2];
        
        if(numer1 > 0 && numer1 < 1000 &&
            denom1 > 0 && denom1 < 1000 &&
            numer2 > 0 && numer2 < 1000 &&
            denom2 > 0 && denom2 < 1000){
            
        int numer = (numer1 * denom2) + (numer2 * denom1); 
        int denom = denom1 * denom2;
        
        for(int i=numer-1; i>1; i--) {
            if(numer % i == 0 && denom % i == 0) { 
                numer /= i;
                denom /= i;
            }
        }
    
        answer[0] = numer;
        answer[1] = denom;
            
        }
        return answer;
    }
}

<작성한 코드>

먼저 예외사항을 if안에 입력해주었다. 그 후 number안에 (분자1*분모2) + (분자2*분모1)을 계산해 넣어주었다. demon에는 두 분모의 곱을 대입해 주었다.

그 후 for문으로 분자와 분모가 모두 나머지가 0인 수를 발견하면 각 분모 분자를 그 수로 나눠준뒤 몫을 저장하도록 하여 기약분수로 만들어 주었다. 마지막으로 answer배열안에 numer, denom을 넣어주고 리턴하였다.

처음에 중간에 for문을 int i=2; i<=numer; i++로 하였는데 어느부분에서 오류가 떴다. 자세히 생각해보니 분모 분자가 1일 경우도 있다는것을 생각하지못했다. 그래서 i는 numer-1부터 시작해주고 1씩 줄여가며 실행하였다. 레벨0 문제인데 생각보다 오래걸렸다.

반응형
프로필사진

남건욱's 공부기록