프로그래머스/[프로그래머스 - JAVA] Lv.0
[프로그래머스 - JAVA] 가까운 수
코딩하는 흰둥이
2023. 3. 12. 14:09
- 내 풀이
import java.util.Arrays;
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
// 오름차순으로 정렬
Arrays.sort(array);
int[] check = new int[array.length];
for (int i = 0; i < array.length; i++) {
// Math.abs - 양수로 변환
check[i] = Math.abs(array[i]- n) ;
}
// 비교할 값으로 array[i]에서 -n 한 값 중 첫번째 값을 넣어둔다.
int result = check[0];
// answer 가 0이면 들어간 값이 없다는 뜻
// result의 0번째 값은 위에서 오름차순으로 정리하여 - n 한 값이므로 값이 크다
for (int i = 0; i < check.length; i++) {
if (answer == 0 || result > check[i]){
result = check[i];
answer = array[i];
}
}
return answer;
}
}
처음에 만들었던 코드는 제출 후 채점하기에서 자꾸 1~2개씩 틀리는 상황이 발생해 날 멘붕에 빠지게 했다
이것저것 찾아보던 중 제한사항을 제대로 읽어보지 않았다는 것을 깨닫게 됐다....하...
- 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
이 중요한 문장을 빼고 코드를 만들었다는거....
Math.abs 까지 사용해놓고 아래의 코드 처럼 만들었어야 했는데 불필요하게 for문을 더 사용하여 코드를 만들었다
- 다른 사람 풀이
import java.util.*;
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
Arrays.sort(array);
for(int i = 1 ; i < array.length ; i++){
if(Math.abs(n-array[0]) > Math.abs(n-array[i])){
array[0] = array[i];
}
}
answer = array[0];
return answer;
}
}
Math.abs 까지 사용해놓고 위의 코드 처럼 만들었어야 했는데 불필요하게 for문을 더 사용하여 코드를 만들었다