728x90
문제 설명
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ array의 길이 ≤ 100
- 1 ≤ array의 원소 ≤ 100
- 1 ≤ n ≤ 100
- 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
입출력 예
array | n | result |
[3, 10, 28] | 20 | 28 |
[10, 11, 12] | 13 | 12 |
입출력 예 설명
입출력 예 #1
- 3, 10, 28 중 20과 가장 가까운 수는 28입니다.
입출력 예 #2
- 10, 11, 12 중 13과 가장 가까운 수는 12입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import java.util.Arrays;
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
int min = 101;
Arrays.sort(array);
for(int i=array.length-1;i>=0;i--) {
if(min >= Math.abs(n-array[i])) {
answer = array[i];
min = Math.abs(n-array[i]);
}
}
return answer;
}
}
|
이 문제는 n값을 빼주었을때 절대 값의 최소값을 구하는 문제이다. 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다. 조건 때문에 정렬하고 뒤에서 부터 구해야 한다. Math.abs() 메서드는 절대값을 구해준다. |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] array, int n) {
int min = Arrays.stream(array).map(v -> Math.abs(v - n)).min().orElse(0);
List<Integer> list = Arrays.stream(array).map(v -> Math.abs(v - n)).boxed().collect(Collectors.toList());
int index1 = list.indexOf(min);
int index2 = list.lastIndexOf(min);
return Math.min(array[index1], array[index2]);
}
}
|
리스트로 만들고 절대 값이 제일 적은 값을 찾는다. int min = Arrays.stream(array).map(v -> Math.abs(v - n)).min().orElse(0); 절대값들의 리스트를 만든다. List<Integer> list = Arrays.stream(array).map(v -> Math.abs(v - n)).boxed().collect(Collectors.toList()); 절대값이 같은 값은 많아야 두개 밖에 없다. 그래서 리스트의 앞에서 부터 indexOf()로 위치를 찾고 int index1 = list.indexOf(min); 리스트의 뒤에서 부터 lastIndexOf()로 위치를 찾는다. int index2 =list.lastIndexOf(min); 배열에서 두개 위치의 값을 비교하여 적은 값을 가지면 된다. return Math.min(array[index1], array[index2]); |
728x90
'프로그래머스 코딩(자바) > Level 0' 카테고리의 다른 글
Programmers Level 0 - 진료 순서 정하기 (0) | 2023.03.06 |
---|---|
Programmers Level 0 - k의 개수 (0) | 2023.03.03 |
Programmers Level 0 - 2차원으로 만들기 (0) | 2023.03.03 |
Programmers Level 0 - 팩토리얼 (0) | 2023.03.03 |
Programmers Level 0 - A로 B 만들기 (0) | 2023.03.03 |