Computer language and framework/GO

[GO] 프로그래머스 > 코딩테스트 입문 > 가까운 수

WhiteGoblin 2024. 10. 26. 17:14
반응형

문제 설명

정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.


제한사항
  • 1 ≤ array의 길이 ≤ 100
  • 1 ≤ array의 원소 ≤ 100
  • 1 ≤ n ≤ 100
  • 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.

입출력 예
array n result
[3,10,28] 20 28
[10,11,12] 13 12

입출력 예 설명

입출력 예 #1

  • 3, 10, 28 중 20과 가장 가까운 수는 28입니다.

입출력 예 #2

  • 10, 11, 12 중 13과 가장 가까운 수는 12입니다.

사고회로

  • 우선 값 비교 하는것을 기준으로 분류 
  • 분류 이후 for 문에서 값을 answer 에 둠 
  • 이후 업데이트 되면 해당 값을 answer 에 업데이트 함
  • 거리가 같으면 더 적은 값인지 확인 이후 값 업데이트
import (
    "math"
)

func solution(array []int, n int) int {
    
    answer := 0 
    
    for _, v := range array {
        
        compare := v - n 
        
        if answer == 0 {
            answer = v 
        } else if math.Abs(float64(compare)) < math.Abs(float64(answer - n )) {
            answer = v
        } else if math.Abs(float64(compare)) == math.Abs(float64(answer - n )) {
            if answer > v {
                answer = v
            } 
        }
        
    }
    return answer
}

 

느낀점?

  • 사고를 다르게 하니 생각보다 쉽게 해결한 문제.
반응형