https://school.programmers.co.kr/learn/courses/30/lessons/120890
정수 배열 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 |
3, 10, 28 중 20과 가장 가까운 수는 28입니다.
10, 11, 12 중 13과 가장 가까운 수는 12입니다.
import java.util.Arrays;
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
int a=0;
int b=0;
boolean isSmall=false;
Arrays.sort(array);
for(int i=0;i<array.length;i++){
if(array[i]<=n){
if(i==array.length-1){
answer=array[i];
}
else if(n<=array[i+1]){
a=n-array[i]; //차
b=array[i+1]-n; //차
if(a>b){
answer=array[i+1];
}
else if(a<b){
answer=array[i];
}
else{//a==b
answer=array[i];
}
}
}
else if(n<array[0]){
answer=array[0];
}
}
return answer;
}
}
17번, 18번에서 자꾸 틀렸다고 나왔었다.
왜 그런가 생각해보니 반례가 있었다.
[2,3,4]
배열에 입력값이 1
이면, 2
가 출력되어야 하는데 나는 4가 출력이 됐던것이다..
그래서, 조건을 추가해줬다.
만약, 첫번째 원소값보다 입력값이 작으면
그냥 바로 답을 첫번째 원소값으로 줬다.