문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120890
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
입출력 예시
array | n | result |
[3, 10, 28] | 20 | 28 |
[10, 11, 12] | 13 | 12 |
풀이
1. array에 들어있는 정수 중 n과 가까운 수를 리턴하는 문제이다.
2. n에 가까운 수를 리턴하기 위해서 array에 있는 인덱스의 값을 빼서 절댓값을 추출한다.
3. 추출한 수를 임의의 값 min보다 작으면 값을 넣어주고, 값을 리턴하는 형식으로 반환한다.
코드 (첫 작성)
class Solution {
public int solution(int[] array, int n) {
int min = Integer.MAX_VALUE;
int answer = 0;
for (int i = 0; i < array.length; i++) {
int a = (int)Math.abs(array[i] - n);
if(min > a) {
min = a;
answer = array[i];
}
}
return answer;
}
}
코드 (재 작성)
1. 현재의 최소 n의 거리와 같이 동일한 경우, 더 작은 값을 저장하는 조건 추가
import java.util.*;
class Solution {
public int solution(int[] array, int n) {
Arrays.sort(array);
int min = Integer.MAX_VALUE;
int answer = 0;
for (int i = 0; i < array.length; i++) {
int a = (int)Math.abs(array[i] - n);
if(min > a) {
min = a;
answer = array[i];
} else if (min == a && answer > array[i]) {
min = a;
answer = array[i];
}
}
return answer;
}
}
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Java :: 가장 큰 수 찾기 (0) | 2023.09.16 |
---|---|
[프로그래머스] Java :: n의 배수 고르기 (0) | 2023.09.14 |
[프로그래머스] Java:: 숨어있는 숫자의 덧셈(2) (0) | 2023.09.14 |
댓글