본문 바로가기
알고리즘/프로그래머스(JAVA)

[JAVA-120890] 가까운 수

by 썬키 2023. 1. 19.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

링크를 클릭하면 해당 문제로 이동합니다.

 

출처 - 프로그래머스

 


 

1. 접근하기

이 문제 역시 난이도가 레벨 0에 수렴하는데 푸는데에 거의 한 시간 가량 걸렸던 문제이다.

우선, 매개변수로 주어진 n과 가장 가까운 정수를 반환하는게 문제이므로 배열의 각 원소에서 n을 뺀 결과를

절대값으로 변환한 다음, 각 원소들끼리의 그 절대값을 비교하면 되겠다고 생각했다. 

 

TO-DO
1) 배열의 각 원소에서 n을 뺀 결과를 절대값으로 변환하고, 그 절대값을 담을 int 타입의 변수(tmp) 만들기
2) tmp와 min 값을 비교해서 min값보다 작으면 min값에 tmp값을 계속 저장하기

 

2. 풀이

class Solution {
    public int solution(int[] array, int n) {
        
        int answer = 0;
        int tmp = 0;
        int min = Integer.MAX_VALUE;

        for (int i = 0; i < array.length; i++) {
			tmp = Math.abs(n - array[i]);
			if (tmp < min) {
				min = tmp;
				answer = array[i];
			} 
		}

        return answer;
        
    }
}

 

3. 결과

 

4. 리뷰

우선, 30분정도는 코드를 어떻게 짜야할지 노트에 적어보느라 시간을 보냈고

20분은 원했던 결과가 안나와서 해결하려고 시간을 보냈다.

왜 5번째 테스트 케이스에서 오류가 날까?

곰곰히 생각해보니 문제에서 주어진 제한사항을 지키지 않아서 였던거 같다.

 

 

이 제한사항에 맞게 출력하려면, 배열을 오름차순으로 정렬해주면 되겠다고 생각해서

Arrays 클래스의 sort 메소드를 이용해서 배열을 정렬한 다음, for문을 돌렸더니 잘 실행되었다.

 

댓글