프로그래머스 문제풀이/알고리즘 (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 공부기록