⌨️
Java アルゴリズム問題を解いてみた #2
問題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