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];
}
}
}
편차를 이용하여 계산
중복이 있을경우와 없을경우를 나누어 생각해야하기에 코드가 길어짐
'Coding Test > JAVA 코딩테스트 풀이정리(프로그래머스)' 카테고리의 다른 글
프로그래머스 스쿨 Lv.1 - 소수만들기 (0) | 2023.12.13 |
---|---|
프로그래머스 스쿨 Lv.1 - 카드뭉치 (0) | 2023.12.12 |
프로그래머스 스쿨 Lv.1 - 옹알이(2) (0) | 2023.12.12 |
프로그래머스 스쿨 Lv.1 - 모의고사 (0) | 2023.12.10 |
프로그래머스 스쿨 Lv.0 - 등수 매기기 (0) | 2023.11.19 |