⌨️

Java アルゴリズム問題を解いてみた #2

2024/09/08に公開

問題1. 整数num1とnum2がパラメータとして与えられます。二つの数が同じなら1を、違ったら-1をretrunするようにsolution関数を完成させてください。

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        answer = num1 == num2 ? 1 : -1;
        return answer;
    }
}

問題2. 1番目の分数の分子と分母を意味するnumer1、denom1、2番目の分数の分子と分母を意味するnumer2、denom2が媒介変数として与えられます。 二つの分数を加えた値を既約分数で表した時、分子と分母を順番に入れた配列をreturnするようにsolution関数を完成させてください。

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        
        //分子(분자)
        int numerator = (numer1 * denom2) + (numer2 * denom1); 
        //分母(분모)
        int denominator = denom1 * denom2;
        
        for(int i = numerator-1; i > 1; i--) {
            // 既約噴水で作る(기약분수로 만들기)
            if(numerator % i == 0 && denominator % i == 0) { 
                numerator /= i;
                denominator /= i;
            }
        }
        
        int[] answer = { numerator, denominator };
        return answer;
    }
}

問題3. 整数配列numbersがパラメータとして与えられます。 numbersの各元素に2倍の元素を持つ配列をreturnするようにsolution関数を完成させてください。

class Solution {
    public int[] solution(int[] numbers) {
        
    for(int i=0; i<numbers.length; i++) {
        numbers[i] *= 2;
    }
        return numbers;
    }
}

問題4. 整数num1、num2がパラメータとして与えられるとき、num1をnum2で割った余りをreturnするようにsolution関数を完成させてください。

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

問題5. 中央値はある与えられた値を大きさの順に整列した時、最も中央に位置する値を意味します。 たとえば、1、2、7、10、11 の中央値は 7 です。 整数配列arrayがパラメータとして与えられる時、中央値をreturnするようにsolution関数を完成させてください。

*arrayの長さは奇数です。

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        
        Arrays.sort(array);
        int length = array.length;
        int answer = array[length / 2];
        return answer;
    }
}

解説

arrayの長さは奇数なので昇順に整列後、2で割ると中央値を求めることができる。

メモ

・配列を整列

  • 昇順に整列 : Arrays.sort()
  • 降順に整列 : Arrays.sort( , Collections.resverseOrder())

Discussion