- 내 풀이
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문을 더 사용하여 코드를 만들었다
'프로그래머스 > [프로그래머스 - JAVA] Lv.0' 카테고리의 다른 글
[프로그래머스 - JAVA] 진료순서 정하기 (0) | 2023.03.12 |
---|---|
[프로그래머스 - JAVA] K의 개수 (0) | 2023.03.12 |
[프로그래머스 - JAVA] 팩토리얼 (0) | 2023.03.12 |
[프로그래머스 - JAVA] 2차원으로 만들기 (0) | 2023.03.11 |
[프로그래머스 - JAVA] A로 B만들기 (0) | 2023.03.11 |
댓글