https://school.programmers.co.kr/learn/courses/30/lessons/120890#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(array, n) {
var answer = 0;
var minus = [];
var negative = [];
var positive = [];
array = array.sort((a,b)=>a-b);
//배열을 순서대로 정리해준다.
for (i=0; i<array.length; i++)
{
minus.push(array[i] - n);
// 배열과 n의 차를 minus라는 배열에 넣어준다.
}
for (i=0; i<array.length; i++)
{
if (minus[i]<0) {negative.push(minus[i]);}
// minus의 원소가 0보다 작다면 negative라는 배열에 넣어준다.
else if (minus[i]>=0) {positive.push(minus[i]);}
// minus의 원소가 0보다 크다면 positive라는 배열에 넣어준다.
}
var min = Math.max(...negative);
// negative 배열의 원소 중 최대값(0에 가장 가까운 값)을 min으로 설정
var max = Math.min(...positive);
// positive 배열의 원소 중 최소값(0에 가장 가까운 값)을 max으로 설정
if (min+max<0) {answer = n+max;}
// 최대값과 최소값의 합이 음수라면, n이랑 max를 더한게 answer가 된다
else if (min+max>=0) {answer = n+min;}
// 최대값과 최소값의 합이 0이거나 양수라면, n이랑 min을 더한게 answer가 된다
// (조건에서 '가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.' 랬으니까)
return answer;
}
230527 python
def solution(arr, n):
answer = 0
arr += [n]
arr.sort()
i = arr.index(n)
if arr[i] == arr[-1] : answer = arr[-2]
elif arr[i] == arr[0] : answer = arr[1]
else :
if arr[i+1]-n < n-arr[i-1] : answer = arr[i+1]
else : answer = arr[i-1]
return answer
230916 C++
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> array, int n) {
int answer = 0;
array.push_back(n);
sort(array.begin(),array.end());
int index = find(array.begin(), array.end(), n) - array.begin();
for(int i=0; i<array.size(); i++){
if((array[index+1]-array[index]<(array[index]-array[index-1]))) {
answer = array[index+1];
}
else if ((array[index+1]-array[index]>=(array[index]-array[index-1]))) {
answer = array[index-1];}
}
if (array[0]==n) answer = array[1];
if (array[array.size()-1]==n) answer = array[array.size()-2];
return answer;
}
'코딩테스트 > LV. 0' 카테고리의 다른 글
LV. 0 :: 문자열 계산하기 (0) | 2023.01.24 |
---|---|
LV. 0 :: 잘라서 배열로 저장하기 (0) | 2023.01.23 |
LV. 0 :: A로 B 만들기 (0) | 2023.01.23 |
LV. 0 :: 최댓값 만들기 2 (0) | 2023.01.23 |
LV. 0 :: 가장 큰 수 찾기 (0) | 2023.01.23 |
댓글