Coding Test/JAVA 코딩테스트 풀이정리(프로그래머스)

프로그래머스 스쿨 Lv.0 - 가까운수
깝몬 2023. 11. 19. 01:37
class Solution {
    public int solution(int[] array, int n) {
        //편차배열생성 및 편차 대입
        int[] dev = new int[array.length];
        for(int i=0;i<array.length;i++){
            dev[i] = array[i]-n>=0?array[i]-n:n-array[i];
        }
        
        //편차배열과 숫자를 비교하여 해당 인덱스 찾아냄
        //중복체크 조심할 것
        int lowIndex1=-1;
        int lowIndex2=-1;
        int lowDev = 100;
        int dupCnt = 0;
        for(int i=0;i<array.length;i++){
            if(lowDev>dev[i]){lowIndex1 = i; dupCnt=0; lowDev=dev[i];} // 갱신시 중복카운트 0으로 조정
            if(lowDev==dev[i]){lowIndex2 = i; dupCnt++;}
        }
        int answer=0;
    
        //중복이 있을경우와 없을경우를 나누어 처리
        if(dupCnt==0){
            return answer = array[lowIndex1];
        }else{
            return answer = array[lowIndex1]<array[lowIndex2]?array[lowIndex1]:array[lowIndex2];
        }
    }
}

 

편차를 이용하여 계산

 

중복이 있을경우와 없을경우를 나누어 생각해야하기에 코드가 길어짐