Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
https://school.programmers.co.kr/learn/courses/30/lessons/120890
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
나의 풀이
- 주석 참고
class Solution {
public int solution(int[] array, int n) {
int[] compareArr = new int[array.length]; // n과 숫자 간 차이 값 배열 생성
for(int i=0; i<array.length; i++) // 차이 값 저장
compareArr[i] = Math.abs(n-array[i]);
int minNum = Arrays.stream(compareArr).min().getAsInt(); // 제일 작은 차이 값 저장
int answer = 101; // 입력 값의 최대는 100이므로 101로 초기화
for(int i=0; i<array.length; i++)
if(minNum == Math.abs(n-array[i]) && answer > array[i])
// 제일 작은 차이 값이면서 제일 작은 애 추출
answer = array[i];
return answer;
}
}
다른 사람의 풀이
- 새로운 배열 공간을 만들지 않고, 주어진 array를 재활용하고 선제적으로 값을 정렬하여 경우의 수(차잇값이 동일한 경우 더 작은 숫자를 추출해야 하는 경우)를 줄임.
import java.util.Arrays;
class Solution {
public int solution(int[] array, int n) {
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];
return array[0];
}
}
'Dev > PS' 카테고리의 다른 글
[프로그래머스-코딩테스트 입문] 암호 해독 (0) | 2023.08.15 |
---|---|
[프로그래머스-코딩테스트 입문] 369게임 (0) | 2023.08.15 |
[프로그래머스-코딩테스트 입문] 삼각형의 완성조건 (1) (0) | 2023.08.15 |
[프로그래머스-코딩테스트 입문] 중복된 문자 제거 (0) | 2023.08.15 |
[프로그래머스-코딩테스트 입문] 배열 원소의 길이 (0) | 2023.08.15 |