글
프로그래머스 C# 가까운 수 찾기(절댓값의 차, Math.Abs,P,J)
프로그래밍
2022. 12. 31. 00:38
728x90
SMALL
using System;
using System.Diagnostics;
public class Solution {
public int solution(int[] array, int n) {
int answer = 0;
int dif = 100; // 범위가 1~100 자연수고 아무리 커도 99이기 때문에 적당히 100으로 차이를 정의한다.
Array.Sort(array);
for(int i=0;i<array.Length;i++)
{
if(Math.Abs(array[i]-n) < dif)
{
dif = Math.Abs(array[i]-n);
answer = array[i];
}
}
return answer;
}
}
//배열을 sorting을 하지 않으면, 예를 들어서 [2, 7, 3] 5같은 경우에 7을 선택해버리는 문제가 있어서 소팅하고 시작하는 게 답이다.(테스트 5번이 이거인 듯)
파이썬
//////////
def solution(array, n):
array.sort(key = lambda x : (abs(x-n), x-n))
answer = array[0]
return answer
자바
/////////
import java.util.*;
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
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];
}
}
answer = array[0];
return answer;
}
}
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
int min = 0;
for(int num : array)
{
if(answer == 0)
{
answer = num;
min = Math.abs(num - n);
}
else
{
if(Math.abs(num - n) < min)
{
answer = num;
min = Math.abs(num - n);
}
else if( Math.abs(num - n) == min && num < answer){
answer = num;
}
}
}
return answer;
}
}
728x90
'프로그래밍' 카테고리의 다른 글
프로그래머스 C# 한 번만 등장한 문자(Concat, OrderBy, P, J) (0) | 2022.12.31 |
---|---|
프로그래머스 C# 진료 순서 정하기(P, J) (0) | 2022.12.31 |
프로그래머스 C# K의 개수(10으로 나눈 나머지 확인, 계속 10으로 나누기, P, J) (0) | 2022.12.31 |
프로그래머스 C# 2차원으로 만들기(2차원 배열, int[,], P, J) (0) | 2022.12.31 |
프로그래머스 C# 모스 부호1(IndexOf, foreach, Split, P, J) (0) | 2022.12.31 |