Problem ๐Ÿ’ป

์ค‘์•™๊ฐ’์€ ์–ด๋–ค ์ฃผ์–ด์ง„ ๊ฐ’๋“ค์„ ํฌ๊ธฐ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1, 2, 7, 10, 11์˜ ์ค‘์•™๊ฐ’์€ 7์ž…๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ค‘์•™๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

Approach 1 โŒ

์ด ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ๋ฌธ์ œ์˜ ํฌ์ธํŠธ๋Š”
1) '์ฃผ์–ด์ง„ ๊ฐ’๋“ค์˜ ํฌ๊ธฐ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ'
2) '์ •๋ ฌํ–ˆ์„๋•Œ ๊ฐ€์žฅ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’'
์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ผ๋‹จ ๋‚˜๋Š” ๋ฐฐ์—ด๋œ ์š”์†Œ๋“ค์„ ํฌ๊ธฐ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ชจ๋ฅธ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์š”์†Œ๋“ค์˜ ์ค‘์•™๊ฐ’์€ ์š”์†Œ๋“ค์˜ ํฌ๊ธฐ/2๋ฅผ ํ•˜์—ฌ int๋กœ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค๋Š” ํžŒํŠธ๋ฅผ ์–ป์—ˆ๋‹ค. 

Approach 2 โญ•

1. ์ค‘์•™๊ฐ’์˜ ์ •์˜ ํŒŒ์•…:

  • ์ค‘์•™๊ฐ’์€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌ๊ธฐ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ๊ฐ’์ด๋‹ค. 
  • ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ, ๊ฐ€์šด๋ฐ ๊ฐ’์ด ์œ ์ผํ•˜๊ฒŒ ์กด์žฌํ•œ๋‹ค.

2. ๋ฌธ์ œ๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ:

  • ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ๋‹ค.
  • ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์ค‘์•™์— ์œ„์น˜ํ•œ ๊ฐ’์„ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ํ™€์ˆ˜์ž„์ด ๋ณด์žฅ๋œ๋‹ค๋Š” ๋ฌธ์ œ ์กฐ๊ฑด์„ ํ™œ์šฉํ•œ๋‹ค.

3. ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ:

  • ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด JAVA์˜ Arrays.sort() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ค‘์•™๊ฐ’์˜ ์ธ๋ฑ์Šค๋Š” (๋ฐฐ์—ด ๊ธธ์ด / 2)๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค. 

Solution ๐Ÿ’ก

java

import java.util.Arrays;

public class MedianFinder {
    public static int solution(int[] array) {
       // Step 1 : ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ๋‹ค. 
       Arrays.sort(array);
       
       // step 2 : ๋ฐฐ์—ด์˜ ์ค‘์•™๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 
       int medianIndex = array.length / 2; // ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ
       return array[medianIndex];
    
    }
    
    public static void main(String[] args) {
       // ํ…Œ์ŠคํŠธ ์˜ˆ์ œ
       int[] exampleArray = {1, 2, 7, 10, 11};
       System.out.println("์ค‘์•™๊ฐ’: " + solution(exampleArray)); //์ถœ๋ ฅ: ์ค‘์•™๊ฐ’:7
    
    }

}

๋…ผ๋ฆฌ์  ํ’€์ด ๊ณผ์ •

1. ๋ฐฐ์—ด ์ •๋ ฌ:

  • Arrays.sort(array)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
  • ์ •๋ ฌ ํ›„, ์˜ˆ๋ฅผ ๋“ค์–ด ์ž…๋ ฅ ๋ฐฐ์—ด์ด {1,2,7,10,11}์ด๋ผ๋ฉด ์ •๋ ฌ๋œ ์ƒํƒœ๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋œ๋‹ค.

2. ์ค‘์•™๊ฐ’ ์œ„์น˜ ์ฐพ๊ธฐ :

  • ์ค‘์•™๊ฐ’์€ ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ n์ผ ๋•Œ, ์ค‘์•™ ์ธ๋ฑ์Šค๋Š” n / 2 ๊ฐ€ ๋œ๋‹ค. 
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 5๋ผ๋ฉด 5/2 = 2์ด๊ณ , ๋ฐฐ์—ด์˜ 2๋ฒˆ ์ธ๋ฑ์Šค ๊ฐ’์ด ์ค‘์•™๊ฐ’์ด๋‹ค.

3. ์ค‘์•™๊ฐ’ ๋ฐ˜ํ™˜ :

๋ฐฐ์—ด์—์„œ ํ•ด๋‹น ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


์•ž์œผ๋กœ ์ƒ๊ฐํ•ด๋ณผ ๋ฌธ์ œ.[์ƒ๊ฐ์˜ ํ™•์žฅ]

๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ์ง์ˆ˜์ผ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ํ•˜์ง€?

๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ, ์ค‘์•™๊ฐ’์€ ๋‘ ์ค‘์•™๊ฐ’ ํ›„๋ณด์˜ ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์ •๋ ฌ๋œ ๋ฐฐ์—ด์ด {1, 2, 3, 4}๋ผ๋ฉด ์ค‘์•™๊ฐ’ ํ›„๋ณด๋Š” 2์™€ 3์ด๊ณ ,
์ค‘์•™๊ฐ’์€ (2+3) / 2 = 2.5๊ฐ€ ๋œ๋‹ค.
ํ•˜์ง€๋งŒ, ๋ฌธ์ œ์—์„œ ์ค‘์•™๊ฐ’์ด ์ •์ˆ˜ํ˜•์ด์–ด์•ผ ํ•œ๋‹ค๋ฉด ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐํ•  ๋•Œ ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ ค์•ผ ํ•œ๋‹ค. 

java

import java.util.Arrays;

class Solution {
   public int solution(int[] array) {
       // Step 1 : ๋ฐฐ์—ด ์ •๋ ฌ
       Arrays.sort(array);
       
       // Step 2 : ๋ฐฐ์—ด ๊ธธ์ด์— ๋”ฐ๋ผ ์ค‘์•™๊ฐ’ ๊ณ„์‚ฐ
       int length = array.length;
       if (length % == 1) {
           // ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ, ์ค‘์•™๊ฐ’์€ ์ค‘๊ฐ„ ์ธ๋ฑ์Šค์˜ ๊ฐ’
           return array[length / 2];
       } else {
           // ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ, ๋‘ ์ค‘์•™๊ฐ’์˜ ํ‰๊ท ๊ฐ’
           int mid1 = array[length / 2 - 1];
           int mid2 = array[length /2];
           return (mid1 + mid2) / 2 ; // ์ •์ˆ˜ํ˜• ๊ณ„์‚ฐ์œผ๋กœ ํ‰๊ท ๊ฐ’ ๋ฐ˜ํ™˜
       
       }
   
   }

}

+ Recent posts