[프로그래머스/JAVA] Lv.0 가까운 수

또치·2023년 1월 19일
0

프로그래머스 JAVA

목록 보기
5/20
post-thumbnail

가까운 수

배열에서 특정 숫자에서 제일 가까운 수 찾는 문제

👍 기억하고 싶은 부분 👍
1. 음수 -> 양수
그냥 곱하기 -1 해주면 끝

🎯 문제

정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.

<제한사항>
1 ≤ array의 길이 ≤ 100
1 ≤ array의 원소 ≤ 100
1 ≤ n ≤ 100
가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.

답안

import java.util.Arrays;
class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        
        // 각각 값 비교해서 사용하려고 변수 2개 만들었다.
        // 하나만 만들어서 할까 했는데 음수 양수로 바꿔주고 대입하려니까 그냥 2개 있는게 편했다 (나는...)
		int temp = 100;
		int temp2=100;
        
        Arrays.sort(array);
		for (int i = 0; i < array.length; i++) {
			temp=n-array[i]<0 ? (n-array[i])*-1 : n-array[i];
			if(temp2>temp) {
				temp2=temp;
				answer=array[i];
			}
			
		}
        return answer;
    }
}

🎲 과정

배열에서 n이라 가장 가까운 수를 찾는 문제였다.
일단 처음에는 단순하게 각각의 원소랑 n을 비교해서 두 수의 차가 제일 적게 나는 애를 고르면 되겠다고 생각했는데 이게 음수도 나오고 하니까 예시는 통과해도 다른 테스트들을 전혀 못 통과했다.
암튼 그래서 음수면 -1 곱해가지고 양수로 만들어준 다음에 수 비교했다.
근데 나는 두 수의 차로만 하니까 테스트 통과가 잘 안돼서 두 수의 차를 최대 수 조건이었던 100에서 빼준 다음에 크기 비교하는거로 했는데 이게 꼭 필요한 규칙인지는 잘 모르겠다...
그리고 조건 잘 읽어야겠어 "기장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다".
이 조건이 되게 중요한거였어 이거 무시했더니 자꾸 어떤 테스트 하나가 통과가 안됐다.
암튼 내가 크기 비교하는데에 이상 , 이하를 안했기 때문에 똑같은 차이 가진애가 나오더라도 맨 먼저 나온애가 값으로 들어오게 된다. 그러니까 그냥 처음에 배열을 오름차순으로 정렬해주고 풀었다!

0개의 댓글