33. 분수의 덧셈 ⭐️⭐️⭐️
최대공약수를 구하는 유클리드 호제법
int[] answer = new int[2];
answer[0]=denum1*num2+denum2*num1;
answer[1]=num1*num2;
int min = Math.min(answer[0],answer[1]);
int max = 1;
for(int i=1; i<=min; i++){
if(answer[0]%i==0 && answer[1]%i==0){
max= i;
}
}
answer[0] /= max;
answer[1] /= max;
return answer;
34. 배열 두 배 만들기
ArrayList<Integer> answer = new ArrayList<>();
for(int num : numbers){
answer.add(num*2);
}
return answer;
for(int i=0; i<numbers.length; i++) numbers[i] *=2;
return numbers;
35. 중앙값 구하기
return array[array.length >> 1];
>>(시프트)연산이 /보다 성능상 더 좋다고는 함.(거의 무시할 수준이라 가독성을 위해서라도 / 쓰는게 좋다고 봄)
36. 최빈값 구하기 ⭐️⭐️⭐️
import java.util.HashMap;
import java.util.Map;
class Solution {
public int solution(int[] array) {
// 최빈값의 빈도수를 저장할 Map 객체 생성
Map<Integer, Integer> map = new HashMap<>();
// 배열의 각 요소를 Map 객체에 추가
for (int i = 0; i < array.length; i++) {
map.put(array[i], map.getOrDefault(array[i], 0) + 1);
}
// 최빈값의 빈도수
int maxCount = 0;
// 최빈값
int mode = -1;
// Map 객체를 순회하며 최빈값을 찾는다.
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() > maxCount) {
maxCount = entry.getValue();
mode = entry.getKey();
}
}
// 최빈값이 여러 개면 -1을 반환한다.
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() == maxCount && entry.getKey() != mode) {
return -1;
}
}
return mode;
}
}
37. 짝수는 싫어요
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.rangeClosed(0, n).filter(value -> value % 2 == 1).toArray();
}
}
'Algorithm' 카테고리의 다른 글
프로그래머스 Lv.0 (2) | 2023.05.30 |
---|---|
프로그래머스 Lv.0 (0) | 2023.05.27 |
프로그래머스 Lv.0 (0) | 2023.05.23 |
프로그래머스 Lv.0 (0) | 2023.05.20 |
프로그래머스 Lv.0 (2) | 2023.05.19 |