programmers Day2

Hwani·2024년 5월 9일

문제 - 두 수의 나눗셈

풀이

class Solution {
    public static int solution(int num1, int num2) {
        // num1을 num2로 나눈 값에 1000을 곱한 후 정수 부분을 반환
        double result = (double) num1 / num2 * 1000;
        return (int) result; // 정수 부분만 반환하기 위해 int로 형변환
    }
}

문제 - 숫자 비교하기

풀이

class Solution {
    public int solution(int num1, int num2) {
        
        if (num1==num2) {
            return 1;
        } else {
            return -1;
        }
        
    }
}

문제 - 분수의 덧셈

풀이

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        // 분자와 분모의 합을 구한다
        int numer = numer1 * denom2 + numer2 * denom1;
        int denom = denom1 * denom2;
        
        // 최대공약수를 구하기 위해 초기값 1을 설정
        int max = 1;
        
        // 최대공약수를 찾기 위한 반복문
        for (int i = 1; i <= numer && i <= denom; i++) {
            if (denom % i == 0 && numer % i == 0) {
                max = i; // 최대공약수를 갱신한다
            }
        }
        
        // 분자와 분모를 최대공약수로 각각 나누어 기약분수를 만든다
        numer = numer / max;
        denom = denom / max;
        
        // 결과를 배열로 반환한다
        int[] answer = {numer, denom};
        
        return answer;
    }
}

설명

유클리드 호제법 / 알고리즘이란?

  • 두 수의 '최대공약수(GCD)'를 찾기 위한 알고리즘을 의미한다.
  • 큰 수를 작은 수로 나누어 떨어지게 한 뒤, 수를 반복적으로 수행하여 나머지가 0이 될 때까지 작동하는 방법을 의미한다. 이 때 작은 수가 최대공약수이다.

유클리드 호제법을 이용한 Java 코드

private int gcd(int a, int b) {
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }

문제 - 배열 두 배 만들기

풀이

class Solution {
    public int[] solution(int[] numbers) {
        
        int[] answer = new int[numbers.length];

        for (int i = 0; i < numbers.length; i++) {
            answer[i] = numbers[i] * 2; 
        }

        return answer; 
    }
}
profile
개발자될거야

0개의 댓글