Contents

κ°€κΉŒμš΄ 수(with.Java)

   Feb 21, 2024     2 min read

β€œκ°€κΉŒμš΄ μˆ˜β€ λ¬Έμ œμ— λŒ€ν•˜μ—¬ μ•Œμ•„λ³Έ κΈ€μž…λ‹ˆλ‹€.

μ½”λ”© ν…ŒμŠ€νŠΈ 문제λ₯Ό ν’€λ©°, ν’€μ—ˆλ˜ λ¬Έμ œμ— λŒ€ν•œ νšŒκ³ μ™€ λ‹€λ₯Έ 풀이 방법을 μ•Œμ•„λ³΄λ©°, μ•Œμ•„κ°€κ³ μž ν•©λ‹ˆλ‹€.

λ¬Έμ œμ— λŒ€ν•΄ λ¨Όμ € μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

문제

μ •μˆ˜ λ°°μ—΄ array와 μ •μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, array에 λ“€μ–΄μžˆλŠ” μ •μˆ˜ 쀑 nκ³Ό κ°€μž₯ κ°€κΉŒμš΄ 수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

μ œν•œμ‚¬ν•­

  • 1 ≀ array의 길이 ≀ 100
  • 1 ≀ array의 μ›μ†Œ ≀ 100
  • 1 ≀ n ≀ 100
  • κ°€μž₯ κ°€κΉŒμš΄ μˆ˜κ°€ μ—¬λŸ¬ 개일 경우 더 μž‘μ€ 수λ₯Ό return ν•©λ‹ˆλ‹€.

μž…μΆœλ ₯ μ˜ˆμ‹œ

sresult
β€œ1 2 Z 3”4
β€œ10 20 30 40”100
β€œ10 Z 20 Z 1”1

λ¬Έμ œμ— λŒ€ν•œ λ‚˜μ˜ 풀이

import java.util.*;
class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        int temp = 101;
        Arrays.sort(array);
        for(int i = 0; i < array.length; i++){
            if(temp > Math.abs(n - array[i])){
                answer = array[i];
                temp = Math.abs(n - array[i]);
            }
        }
        return answer;
    }
}

풀이 μ„€λͺ…

  • μ΄ˆκΈ°κ°’ μ„€μ •: temp λ³€μˆ˜λ₯Ό 101둜 μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€. 이 값은 λ°°μ—΄ μš”μ†Œμ˜ μ΅œλŒ€ 차이보닀 크게 μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • λ°°μ—΄ μ •λ ¬: Arrays.sort λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 배열을 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•©λ‹ˆλ‹€.
  • λ°°μ—΄ 순회: μ •λ ¬λœ 배열을 μˆœνšŒν•˜λ©΄μ„œ 각 μš”μ†Œμ™€ n의 차이λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.
  • κ°€μž₯ κ°€κΉŒμš΄ μš”μ†Œ μ°ΎκΈ°: ν˜„μž¬κΉŒμ§€μ˜ μ΅œμ†Œ 차이보닀 μž‘μ€ 차이가 λ‚˜νƒ€λ‚  경우, ν•΄λ‹Ή μš”μ†Œλ₯Ό answer에 ν• λ‹Ήν•˜κ³  temp 값을 κ°±μ‹ ν•©λ‹ˆλ‹€.
  • κ²°κ³Ό λ°˜ν™˜: κ°€μž₯ κ°€κΉŒμš΄ μš”μ†Œλ₯Ό μ°Ύμ•˜λ‹€λ©΄ 이λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

μ½”λ“œ μž₯점

  • μ˜€λ¦„μ°¨μˆœ μ •λ ¬ ν™œμš©: μ •λ ¬λœ 배열을 μ‚¬μš©ν•˜μ—¬ nκ³Ό κ°€μž₯ κ°€κΉŒμš΄ μš”μ†Œλ₯Ό 효율적으둜 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.
  • κ°„κ²°ν•œ 둜직: κ°„λ‹¨ν•˜λ©΄μ„œλ„ 효과적인 둜직으둜 κ°€μž₯ κ°€κΉŒμš΄ λ°°μ—΄ μš”μ†Œλ₯Ό μ°Ύκ³  μžˆμŠ΅λ‹ˆλ‹€.

μ½”λ“œ 단점

  • κ³ μ •λœ μ΄ˆκΈ°κ°’: μ΄ˆκΈ°κ°’ 101은 λ°°μ—΄ μš”μ†Œμ˜ μ΅œλŒ€ 차이에 따라 κ²°μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½ λ°°μ—΄μ˜ κ°’ λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λ©΄ 이 값을 μ μ ˆν•˜κ²Œ μ‘°μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • 배열이 λΉ„μ–΄μžˆμ„ 경우 처리 λΆ€μž¬: ν˜„μž¬ μ½”λ“œλŠ” 배열이 λΉ„μ–΄μžˆμ„ λ•Œμ˜ 처리λ₯Ό κ³ λ €ν•˜μ§€ μ•Šκ³  μžˆμŠ΅λ‹ˆλ‹€. 빈 배열에 λŒ€ν•œ 처리λ₯Ό μΆ”κ°€ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
  • μ΅œμ†Œ 차이가 μ—¬λŸ¬ 개인 경우 처리 λΆ€μž¬: ν˜„μž¬ μ½”λ“œλŠ” μ΅œμ†Œ 차이가 μ—¬λŸ¬ 개인 κ²½μš°μ— λŒ€ν•œ 처리λ₯Ό ν•˜κ³  μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 배열이 [1, 5, 9]이고 n이 6인 경우, 5와 9 λͺ¨λ‘ μ΅œμ†Œ 차이λ₯Ό κ°–μŠ΅λ‹ˆλ‹€. 이에 λŒ€ν•œ 처리λ₯Ό μΆ”κ°€ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.