Java 알고리즘 기초부터... (8월 11일 월요일)

Devkty·2025년 8월 16일

취업도전기

목록 보기
2/32

이력서와 포트폴리오를 리팩토링하는 동시에 알고리즘 문제를 풀어보았다.
정글에서는 Python으로 풀었는데, Java 언어를 좋아하기도 하고 원하는 직무들이 백엔드라 거의 다 Java로 시험을 보길래 처음부터 다시해야한다.

백준이 아닌 프로그래머스라는 사이트를 활용하여 연습했다.

01:30 ~

코딩 테스트 문제를 풀었다. 밀린 문제들을 정리해서 노션에 정리도 해봐야겠다. 앞으로 프로그래머스에서 문제를 풀 것이다.

두 수의 나눗셈

num1과 num2를 나눈 값에 1000을 곱한 값을 리턴하면 된다.

class Solution {
    public int solution(float num1, float num2) {
        int result = (int) (1000 * (num1 / num2));
        return result;
    }
}

숫자 비교하기

정수 num1과 num2가 같으면 1, 다르면 -1을 리턴하면 된다.

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

분수의 덧셈

numer1과 denom1로 이루어진 분수와 numer2와 denom2로 이루어진 분수의 덧셈의 기약분수를 구하면됩니다.

해당문제가 기약분수를 구하는 문제때문에 푸는데 시간이 오래걸렸습니다. 유클리드 호제법에 따라 기약분수를 구할 수 있다고 합니다.

마지막 gcd를 통해 분자, 분모의 최대공약수를 구할 수 있습니다. 그럼 그 최대공약수를 분자와 분모에 각각 그 값으로 나누면 기약분수를 구할 수 있습니다.

코드로는 다음과 같이 나타낼 수 있습니다.

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
            int son = numer1 * denom2 + numer2 * denom1;
            int mom = denom1 * denom2;
            
            int g = gcd(Math.abs(son), Math.abs(mom));
            
            son /= g;
            mom /= g;
            
            if (mom < 0) {
                son = -son;
                mom = -mom;
            }
            return new int[] {son, mom};
        }
        
        public int gcd(int a, int b) {
            while(b != 0) {
                int temp = b;
                b = a % b;
                a = temp;
            }
            
            return a;
        }
}

배열 두배 만들기

정수 배열 numbers의 각 원소에 두배한 값을 리턴하면 됩니다.

할 방법은 알겠는데, 코드로 어떻게 작성하는지 헤멧습니다. for문을 사용하면 됩니다.

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;
    }
}

나머지 구하기

정수 num1과 num2에 대해 나눈 나머지를 리턴하면 됩니다.

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 % num2;

        return answer;
    }
}

중앙값 구하기

어떤 배열들의 중앙값을 구하기만 하면 됩니다. 9, -1, 0이면 중앙값은 0 입니다.

오름차순 정렬과 배열 길이를 사용하여 구하였습니다.

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        
        int size = array.length;
        int half = (size + 1) / 2;
        Arrays.sort(array);
        
        return array[half - 1];
    }
}
profile
모든걸 기록하며 성장하고 싶은 개발자입니다. 현재 크래프톤 정글 8기를 수료하고 구직활동 중입니다.

0개의 댓글