목차
문제 설명
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ array의 길이 ≤ 100
- 1 ≤ array의 원소 ≤ 100
- 1 ≤ n ≤ 100
- 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
class Solution {
public int solution(int[] array, int n) {
// 차이값 배열 생성
int[] array_t = new int[array.length];
for (int i = 0; i < array.length; i++) {
array_t[i] = Math.abs(array[i] - n);
}
// 최소값의 인덱스 찾기
int minIndex = 0;
for (int i = 1; i < array_t.length; i++) {
if (array_t[i] < array_t[minIndex] ||
(array_t[i] == array_t[minIndex] && array[i] < array[minIndex])) {
minIndex = i; // 더 작은 차이나 작은 값을 가진 인덱스 갱신
}
}
return array[minIndex];
}
}
코드 설명
1. 차이 계산
입력 배열의 각 요소와 기준 값 n의 절대값 차이를 계산해 새 배열에 저장한다. 이 배열은 원래 값들과 기준 값 간의 거리를 나타내며, 가장 가까운 값을 선택하는 기준으로 사용된다.
2. 최소 차이의 인덱스 찾기
새롭게 만든 차이 배열을 순회하며 가장 작은 차이를 가진 인덱스를 찾는다. 이 인덱스는 원래 배열에서 기준 값 n과 가장 가까운 값의 위치를 의미한다.
3. 같은 차이가 여러 개일 때 처리
만약 두 개 이상의 값이 기준 값과 동일한 차이를 가진다면, 원래 배열에서 값이 더 작은 쪽을 선택하도록 조건을 추가한다. 이렇게 하면 문제에서 요구하는 "더 작은 값을 반환"하는 조건을 만족시킬 수 있다.
4. 결과 반환
최소 차이를 가진 인덱스를 기반으로 원래 배열의 해당 값을 선택해 반환한다. 이 값이 기준 값과 가장 가까운 수다.
728x90
'JAVA > 프로그래머스 코딩테스트 입문' 카테고리의 다른 글
[프로그래머스, LV.0] 7의 개수 (0) | 2024.12.10 |
---|---|
[프로그래머스, LV.0] 한 번만 등장한 문자 (0) | 2024.12.10 |
[프로그래머스, LV.0] 숨어있는 숫자의 덧셈 (2) (0) | 2024.12.10 |
[프로그래머스, LV.0] 팩토리얼 (0) | 2024.12.10 |
[프로그래머스 LV.0] 진료 순서 정하기 (0) | 2024.12.10 |