※ 배운 점
1. Math.abs() 절대값으로 변환
: 수학에서 숫자의 절대값은 전달된 숫자의 양수값과 같다. ex) |+5| = 5 , |-5| = 5
: import java.util.* or java.lang.Math 클래스 선언 필요하다. (라이브러리)
: Math.abs(n) ex) Math.abs(-5) = 5
- 가까운 수를 찾기 위해 매개변수와 배열의 값의 차를 구하기 위해 양수의 값으로 표현하기 위해 사용.
2. Arrays.sort() 정렬
: 기본값으로 오름차순으로 정렬이 된다.
: 10, 3, 28 --> 3, 10, 28 로 정렬.
문제 설명
: 정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
제한 사항
: 1 ≤ array의 길이 ≤ 100
: 1 ≤ array의 원소 ≤ 100
: 1 ≤ n ≤ 100
: 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
입출력 예

입출력 예 설명
입출력 예 #1
3, 10, 28 중 20과 가장 가까운 수는 28입니다.
입출력 예 #2
10, 11, 12 중 13과 가장 가까운 수는 12입니다.
나의 풀이
import java.util.*;
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
Arrays.sort(array); // 배열 array값을 정렬한다. 기본적으로 오름차순
for(int i=1; i<array.length; i++){
// n(20) - array[0](3) || n(20) - array[1](10)
// 1. 20-3 = 17 || 20 - 10 = 10
/* if(17>10){
array[0] = array[1] == 0번째에 값 : 10을 넣는다.
}*/
// n(20) - array[0](10) || n(20) - array[2](28)
// 2. 20 - 10 = 10 || 20 - 28 = -8 abs(-8) = 8
/* if(10 > 8){
array[0] = array[2](28) == 0번째에 값 : 28을 넣는다.
}
*/
// Math.abs() 수학라이브러리에서 제공하는 수학 함수 : abs() 절대값 변환
if(Math.abs(n-array[0]) > Math.abs(n-array[i])){
array[0] = array[i];
}
}
// 최종적으로 들어가는 값 array[0](28)을 answer 변수에 넣는다.
answer = array[0];
return answer;
}
}
※ 정렬된 값 중 첫 번째 값은 고정시킨 후 하나하나 차이값으로 비교를 한다. 기존 0번째 값 차이보다 작으면 0번째값에 값을 넣고 반복적으로 비교를 하여 제일 차이값이 작은 값을 넣어서 출력한다..
# 아직..모르는게..많다...답을 보면..이해하지만..돌면 까먹고...더 열심히하자..
'JAVA 공부' 카테고리의 다른 글
| [프로그래머스 - Java] 한 번만 등장한 문자 (0) | 2024.12.17 |
|---|---|
| [ 프로그래머스 - Java ] 7의 개수 (5) | 2024.12.12 |
| [프로그래머스 - Java] 숨어있는 숫자의 덧셈(2) (0) | 2024.12.04 |
| [ 프로그래머스 - Java ] 팩토리얼. (0) | 2024.12.04 |
| [프로그래머스 - Java] 진료순서 정하기 (0) | 2024.12.03 |