Skip to content

Latest commit

ย 

History

History
441 lines (339 loc) ยท 13.5 KB

week_04.md

File metadata and controls

441 lines (339 loc) ยท 13.5 KB

4์ฃผ์ฐจ-๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„


๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์•„์ด๋””๋ฅผ ๋ชจ๋ฅด๋Š” ํ•œ๊ตญ์ธ ๋™๊ฐ‘์นœ๊ตฌ A์˜ SNS๋ฅผ ์ฐพ๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์ฐพ๋Š” ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

    1. ๋‚˜๋ผ๋ฅผ ์ฐพ๋Š”๋‹ค. ํ˜น์€ ์–ธ์–ด์˜ ๋ฐœ์Œ์„ ๋น„๊ตํ•˜์—ฌ ํ•œ๊ตญ์ธ์„ ์ฐพ๋Š”๋‹ค.
    2. ํ”„๋กœํ•„ ์‚ฌ์ง„์ด ์นœ๊ตฌ์ด๊ฑฐ๋‚˜ ๋˜๋ž˜์ธ ์‚ฌ๋žŒ์„ ์ฐพ๋Š”๋‹ค.
    3. ์นœ๊ตฌ์˜ ์ด๋ฆ„, ์ƒ๋…„์›”์ผ ๋“ฑ ์นœ๊ตฌ์ธ ๊ฒƒ ๊ฐ™์€ ์•„์ด๋””๋ฅผ ์ฐพ๋Š”๋‹ค.
    
    • ์œ„์™€ ๊ฐ™์ด ์–ด๋–ค ๊ฒ€์ƒ‰์„ ํ•˜์—ฌ๋„ ํŠน์ • ํ•ญ๋ชฉ์— ์ฃผ๋ชฉํ•˜๋Š” ๊ฒƒ์€ '๊ฒ€์ƒ‰'์˜ ํŠน์ง•์ด๋‹ค.
    • ์ฃผ๋ชฉํ•˜๋Š” ํ•ญ๋ชฉ์„ 'ํ‚ค(key)'๋ผ๊ณ  ์ง€์นญํ•˜๊ณ , ๊ฒ€์ƒ‰ ๊ณผ์ •์„ ์‚ดํŽด๋ณด์ž.
      1. ํ‚ค ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ง€์ •(๊ตญ๊ฐ€)
      2. ํ‚ค ๊ฐ’์˜ ๊ตฌ๊ฐ„์„ ์ง€์ •(๋˜๋ž˜์˜ ๋‚˜์ด๋Œ€)
      3. ํ‚ค ๊ฐ’๊ณผ ๋น„์Šทํ•˜๋„๋ก ์ง€์ •(์นœ๊ตฌ๊ฐ€ ์‚ฌ์šฉํ•  ๊ฒƒ ๊ฐ™์€ ์•„์ด๋””)
      
    • ๋ฌผ๋ก , ์กฐ๊ฑด์€ ํ•˜๋‚˜์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ•์—์„œ์˜ ๋ช‡๋ช‡์€ ์ž๋ฃŒ๊ตฌ์กฐ์— ์˜์กดํ•œ๋‹ค. ์Šคํ„ฐ๋””์—์„œ๋Š” ๋ฐฐ์—ด์˜ ๊ฒ€์ƒ‰์„ ๋‹ค๋ฃฌ๋‹ค.


๋ฐฐ์—ด์˜ ๊ฒ€์ƒ‰ ์ข…๋ฅ˜

์„ ํ˜• ๊ฒ€์ƒ‰

  • ๋ฌด์ž‘์œ„๋กœ ๋Š˜์–ด๋†“์€ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰

์ด์ง„ ๊ฒ€์ƒ‰

  • ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰

ํ•ด์‹œ๋ฒ•

  • ์ถ”๊ฐ€, ์‚ญ์ œ๊ฐ€ ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰
    • ์ฒด์ธ๋ฒ• : ๊ฐ™์€ ํ•ด์‹œ ๊ฐ’์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํ˜• ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ์˜คํ”ˆ ์ฃผ์†Œ๋ฒ• : ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ํ•ด์‹œ ๊ฐ’์ด ์ถฉ๋Œํ•  ๋•Œ ์žฌํ•ด์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•

์„ ํ˜• ๊ฒ€์ƒ‰(Linear Search)

  • ์š”์†Œ๊ฐ€ ์ง์„  ๋ชจ์–‘์œผ๋กœ ๋Š˜์–ด์„  ๋ฐฐ์—ด์—์„œ์˜ ๊ฒ€์ƒ‰
    • ์›ํ•˜๋Š” ํ‚ค(์กฐ๊ฑด) ๊ฐ’์„ ๊ฐ–๋Š” ์š”์†Œ๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ๋งจ ์•ž๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์š”์†Œ๋ฅผ ๊ฒ€์ƒ‰
    • ์„ ํ˜• ๊ฒ€์ƒ‰(Linear Search) ๋˜๋Š” ์ˆœ์ฐจ ๊ฒ€์ƒ‰(Sequential Search)์ด๋ผ๊ณ  ํ•จ


  • ์œ„์˜ ์˜ˆ์ œ๋กœ ๋ณด๋Š” ์„ ํ˜• ๊ฒ€์ƒ‰์˜ ์ข…๋ฃŒ ์กฐ๊ฑด

    • ์กฐ๊ฑด 1 : ๊ฒ€์ƒ‰ํ•  ๊ฐ’์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฐฐ์—ด์˜ ๋์— ๋„๋‹ฌํ•œ ๊ฒฝ์šฐ(๊ฒ€์ƒ‰ ์‹คํŒจ)
    • ์กฐ๊ฑด 2 : ๊ฒ€์ƒ‰ํ•  ๊ฐ’๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ(๊ฒ€์ƒ‰ ์„ฑ๊ณต)
  • ์‹ค์Šต

    public static int seqSearch(int[] n, int t)
    {
        int i = 0;
        
        while (true)
        {
            if (i == n.length)
                return -1;
            if (n[i] == t)
                return i;
            
            i++;
        }
    }

๋ณด์ดˆ๋ฒ•

  • ์„ ํ˜• ๊ฒ€์ƒ‰์˜ ์ข…๋ฃŒ ์กฐ๊ฑด ๊ฒ€์‚ฌ ๋น„์šฉ์„ 50%๋กœ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•

    • ๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•˜๋Š” ํ‚ค ๊ฐ’์„ ๋งจ ๋ ์š”์†Œ์— ์ €์žฅ
    • ์ด ๊ฒฝ์šฐ ์กฐ๊ฑด 1์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๊ณ  ์กฐ๊ฑด 2๋งŒ ๊ฒ€์‚ฌ
  • ์‹ค์Šต

    public static void main(String[] args)
    {
        int[] serachTargetArray = {6, 1, 2, 3, 4, 8, 9, 7, 5};
        int[] tempTargetArray = new int[searchTargetArray.length];
    
        for(int i = 0; i < serachTargetArray.length; i++)
            tempTargetArray[i] = serachTargetArray[i];
    
        seqSearchSen(tempTargetArray, 9);
    }
    
    public static int seqSearchSen(int[] n, int t)
    {
        n[n.length - 1] = t;
    
        int i = 0;
        
        while (true)
        {
            if (n[i] == t)
                break;
            i++;
        }
        
        return i == n.length ? -1 : i;
    }

์ด์ง„ ๊ฒ€์ƒ‰(Binary Search)

  • ์š”์†Œ๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์ ์šฉํ•˜๋Š” ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜


  • ์œ„์˜ ์˜ˆ์ œ๋กœ ๋ณด๋Š” ์ด์ง„ ๊ฒ€์ƒ‰์˜ ์ข…๋ฃŒ ์กฐ๊ฑด

    • ์กฐ๊ฑด 1 : ๊ฒ€์ƒ‰ ๋ฒ”์œ„๊ฐ€ ๋” ์ด์ƒ ์—†๋Š” ๊ฒฝ์šฐ(๊ฒ€์ƒ‰ ์‹คํŒจ)
    • ์กฐ๊ฑด 2 : ๊ฒ€์ƒ‰ํ•  ๊ฐ’๊ณผ ๋ฐฐ์—ด์˜ ์ค‘์•™ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ(๊ฒ€์ƒ‰ ์„ฑ๊ณต)
  • ์‹ค์Šต

    public static int binSearch(int[] n, int t)
    {
        int start = 0;
        int end = n.length - 1;
        
        do
        {
            int center = (start + end) / 2;
            
            if (n[center] == t)
                return center;
            else if (n[center] < t)
                start = center + 1;
            else
                end = center - 1;
    
        } while (start <= end);
    
        return -1;
    }

์„ ํ˜• ๊ฒ€์ƒ‰๊ณผ ์ด์ง„ ๊ฒ€์ƒ‰์˜ ๋น„๊ต


์„ ํ˜• ๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„(Time Complexity)

  • ์ฝ”๋“œ

    static int seqSearch(int[] n, int t)
    {
        int i = 0;                                  // 1
        while(i < n.length)                         // 2
        {
            if(n[i] == t)                           // 3
            {
                // ๊ฒ€์ƒ‰ ์„ฑ๊ณต
                return i;                           // 4
            }
    
            i++;                                    // 5
        }
        // ๊ฒ€์ƒ‰ ์‹คํŒจ
        return -1;                                  // 6
    }
  • ์„ ํ˜• ๊ฒ€์ƒ‰์—์„œ์˜ ๊ฐ ๋‹จ๊ณ„ ์‹คํ–‰ ํšŸ์ˆ˜์™€ ๋ณต์žก๋„

    ๋‹จ๊ณ„ ์‹คํ–‰ ํšŸ์ˆ˜ ๋ณต์žก๋„
    1 1 O(1)
    2 n/2 O(n)
    3 n/2 O(n)
    4 1 O(1)
    5 n/2 O(n)
    6 1 O(1)
    O(1) + O(n) + O(n) + O(1) + O(n) + O(1) = O(max(1,n,n,1,n,1)) = O(n)
    

์ด์ง„ ๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„(Time Complexity)

  • ์ฝ”๋“œ

    static int binSearch(int[] n, int t)
    {
        // ๊ฒ€์ƒ‰ ๋ฒ”์œ„์˜ ์‹œ์ž‘(์ฒ˜์Œ) ์ธ๋ฑ์Šค
        int start = 0;                              // 1
        // ๊ฒ€์ƒ‰ ๋ฒ”์œ„์˜ ์ข…๋ฃŒ(๋) ์ธ๋ฑ์Šค
        int end = n.length -1;                      // 2
    
        do
        {
            // ์ค‘์•™ ์š”์†Œ์˜ ์ธ๋ฑ์Šค
            int center = (start+end) / 2;           // 3
            
            if(n[center] == t)                      // 4
            {
                // ๊ฒ€์ƒ‰ ์„ฑ๊ณต
                return center;                      // 5
            }
            else if(n[center] < key)                // 6
            {
                // ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ๋’ค์ชฝ ๋ฐ˜์œผ๋กœ ์ขํžŒ๋‹ค.
                start = center + 1;                 // 7
            }
            else{
                // ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ์•ž์ชฝ ๋ฐ˜์œผ๋กœ ์ขํžŒ๋‹ค.
                end = center -1;                    // 8
            }
        }
        while(start <= end);                        // 9
    
        // ๊ฒ€์ƒ‰ ์‹คํŒจ
        return -1;                                  // 10
    }
  • ์ด์ง„ ๊ฒ€์ƒ‰์—์„œ์˜ ๊ฐ ๋‹จ๊ณ„ ์‹คํ–‰ ํšŸ์ˆ˜์™€ ๋ณต์žก๋„

    ๋‹จ๊ณ„ ์‹คํ–‰ ํšŸ์ˆ˜ ๋ณต์žก๋„
    1 1 O(1)
    2 1 O(1)
    3 log n O(log n)
    4 log n O(log n)
    5 1 O(1)
    6 log n O(log n)
    7 log n O(log n)
    8 log n O(log n)
    9 log n O(log n)
    10 1 O(1)
    O(1) + O(1) + O(log n) + ... + O(1) = O(log n)
    

Big-O ์˜ ๋Œ€์†Œ ๊ด€๊ณ„

O(1) < O(log n) < O(n) < O(n log n) < O(nยฒ) < O(2โฟ) < O(n!) < O(nโฟ)



4์ฃผ์ฐจ - ๋ฌธ์ œ(๊ฒ€์ƒ‰)

  • ๋ฌธ์ œ ์„ค๋ช…

    • ์ˆ˜ํฌ์ž๋Š” ์ˆ˜ํ•™์„ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž ์‚ผ์ธ๋ฐฉ์€ ๋ชจ์˜๊ณ ์‚ฌ์— ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์ „๋ถ€ ์ฐ์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž๋Š” 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐ์Šต๋‹ˆ๋‹ค.
      1๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
      2๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
      3๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
      
    • 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€์˜ ์ •๋‹ต์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์€ ๋ฐฐ์—ด answers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
  • ์ œํ•œ์‚ฌํ•ญ

    • ์‹œํ—˜์€ ์ตœ๋Œ€ 10,000 ๋ฌธ์ œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฌธ์ œ์˜ ์ •๋‹ต์€ 1, 2, 3, 4, 5์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
    • ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฟ์ผ ๊ฒฝ์šฐ, returnํ•˜๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

  • java ํ’€์ด

    import java.util.*;
    
    class Solution {
        public int[] solution(int[] answers) {
            int[] student1 = { 1, 2, 3, 4, 5 };
            int[] student2 = { 2, 1, 2, 3, 2, 4, 2, 5 };
            int[] student3 = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };
            
            int[] tempA = new int[3];
            
            for (int i = 0; i < answers.length; i++)
            {
                if (answers[i] == student1[i % 5])
                {
                    tempA[0]++;
                }
                if (answers[i] == student2[i % 8])
                {
                    tempA[1]++;
                }
                if (answers[i] == student3[i % 10])
                {
                    tempA[2]++;
                }
            }
            
            int temp = tempA[0];
            
            for (int i = 1; i < tempA.length; i++)
            {
                if (tempA[i] > temp)
                {
                    temp = tempA[i];
                }
            }
            
            List<Integer> answer = new ArrayList<Integer>();
            
            for (int i = 0; i < tempA.length; i++)
            {
                if (temp == tempA[i])
                {
                    answer.add(i + 1);
                }
                
            }
            
            int[] returnValue = new int[answer.size()];
            
            for (int i = 0; i < answer.size(); i++)
            {
                returnValue[i] = answer.get(i);
            }
            
            return returnValue;
        }
    }
  • c# ํ’€์ด

    using System.Collections.Generic;
    using System.Linq;
    
    public class Solution {
        public int[] solution(int[] answers) {
    int[] student1 = { 1, 2, 3, 4, 5 };
                int[] student2 =  { 2, 1, 2, 3, 2, 4, 2, 5 };
                int[] student3 =  { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };
    
                // ์ ์ˆ˜๋ฅผ ์ €์žฅํ•  ์ž„์‹œ ๋ฐฐ์—ด ์ƒ์„ฑ
                int[] tempArray = new int[3];
    
                // ๋ฌธ์ œ์™€ ๋‹ต๋ณ€์„ ์™„์ „ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์ˆ˜ํฌ์ž๋“ค์˜ ๋‹ต์•ˆ ์ฒดํฌ ํ›„ ์ ์ˆ˜ ์ฆ๊ฐ€
                for (int i = 0; i < answers.Length; i++)
                {
                    // 1๋ฒˆ ์ˆ˜ํฌ์ž ์ ์ˆ˜ ์ฆ๊ฐ€
                    if (answers[i] == student1[i % 5])
                    {
                        tempArray[0]++;
                    }
    
                    // 2๋ฒˆ ์ˆ˜ํฌ์ž ์ ์ˆ˜ ์ฆ๊ฐ€
                    if (answers[i] == student2[i % 8])
                    {
                        tempArray[1]++;
                    }
    
                    // 3๋ฒˆ ์ˆ˜ํฌ์ž ์ ์ˆ˜ ์ฆ๊ฐ€
                    if (answers[i] == student3[i % 10])
                    {
                        tempArray[2]++;
                    }
                }
    
                int max = 0;
    
                for(int i = 0; i < tempArray.Length; i++)
                {
                    if (max < tempArray[i])
                        max = tempArray[i];
                }
    
                List<int> list = new List<int>();
    
                for(int i = 0; i < tempArray.Length; i++)
                {
                    if (max == tempArray[i])
                        list.Add(i + 1);
                }
    
                int[] answer = new int[list.Count];
    
                for (int i = 0; i < answer.Length; i++)
                {
                    answer[i] = list[i];
                }
    
                return answer;
        }
    }

  • ๋ฌธ์ œ

    • ์ƒ๊ทผ์ด๋Š” ๋‚˜๋ฌด M๋ฏธํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๊ทผ์ฒ˜์— ๋‚˜๋ฌด๋ฅผ ๊ตฌ์ž…ํ•  ๊ณณ์ด ๋ชจ๋‘ ๋งํ•ด๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์—, ์ •๋ถ€์— ๋ฒŒ๋ชฉ ํ—ˆ๊ฐ€๋ฅผ ์š”์ฒญํ–ˆ๋‹ค. ์ •๋ถ€๋Š” ์ƒ๊ทผ์ด๋„ค ์ง‘ ๊ทผ์ฒ˜์˜ ๋‚˜๋ฌด ํ•œ ์ค„์— ๋Œ€ํ•œ ๋ฒŒ๋ชฉ ํ—ˆ๊ฐ€๋ฅผ ๋‚ด์ฃผ์—ˆ๊ณ , ์ƒ๊ทผ์ด๋Š” ์ƒˆ๋กœ ๊ตฌ์ž…ํ•œ ๋ชฉ์žฌ์ ˆ๋‹จ๊ธฐ์„ ์ด์šฉํ•ด์„œ ๋‚˜๋ฌด๋ฅผ ๊ตฌํ• ๊ฒƒ์ด๋‹ค.

    • ๋ชฉ์žฌ์ ˆ๋‹จ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค. ๋จผ์ €, ์ƒ๊ทผ์ด๋Š” ์ ˆ๋‹จ๊ธฐ์— ๋†’์ด H๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋†’์ด๋ฅผ ์ง€์ •ํ•˜๋ฉด ํ†ฑ๋‚ ์ด ๋•…์œผ๋กœ๋ถ€ํ„ฐ H๋ฏธํ„ฐ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค. ๊ทธ ๋‹ค์Œ, ํ•œ ์ค„์— ์—ฐ์†ํ•ด์žˆ๋Š” ๋‚˜๋ฌด๋ฅผ ๋ชจ๋‘ ์ ˆ๋‹จํ•ด๋ฒ„๋ฆฐ๋‹ค. ๋”ฐ๋ผ์„œ, ๋†’์ด๊ฐ€ H๋ณด๋‹ค ํฐ ๋‚˜๋ฌด๋Š” H ์œ„์˜ ๋ถ€๋ถ„์ด ์ž˜๋ฆด ๊ฒƒ์ด๊ณ , ๋‚ฎ์€ ๋‚˜๋ฌด๋Š” ์ž˜๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ์ค„์— ์—ฐ์†ํ•ด์žˆ๋Š” ๋‚˜๋ฌด์˜ ๋†’์ด๊ฐ€ 20, 15, 10, 17์ด๋ผ๊ณ  ํ•˜์ž. ์ƒ๊ทผ์ด๊ฐ€ ๋†’์ด๋ฅผ 15๋กœ ์ง€์ •ํ–ˆ๋‹ค๋ฉด, ๋‚˜๋ฌด๋ฅผ ์ž๋ฅธ ๋’ค์˜ ๋†’์ด๋Š” 15, 15, 10, 15๊ฐ€ ๋  ๊ฒƒ์ด๊ณ , ์ƒ๊ทผ์ด๋Š” ๊ธธ์ด๊ฐ€ 5์ธ ๋‚˜๋ฌด์™€ 2์ธ ๋‚˜๋ฌด๋ฅผ ๋“ค๊ณ  ์ง‘์— ๊ฐˆ ๊ฒƒ์ด๋‹ค. (์ด 7๋ฏธํ„ฐ๋ฅผ ์ง‘์— ๋“ค๊ณ  ๊ฐ„๋‹ค)

    • ์ƒ๊ทผ์ด๋Š” ํ™˜๊ฒฝ์— ๋งค์šฐ ๊ด€์‹ฌ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ๋‚˜๋ฌด๋ฅผ ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ์ง‘์œผ๋กœ ๊ฐ€์ ธ๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ, ์ ์–ด๋„ M๋ฏธํ„ฐ์˜ ๋‚˜๋ฌด๋ฅผ ์ง‘์— ๊ฐ€์ ธ๊ฐ€๊ธฐ ์œ„ํ•ด์„œ ์ ˆ๋‹จ๊ธฐ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋†’์ด์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  • ์ž…๋ ฅ

    • ์ฒซ์งธ ์ค„์— ๋‚˜๋ฌด์˜ ์ˆ˜ N๊ณผ ์ƒ๊ทผ์ด๊ฐ€ ์ง‘์œผ๋กœ ๊ฐ€์ ธ๊ฐ€๋ ค๊ณ  ํ•˜๋Š” ๋‚˜๋ฌด์˜ ๊ธธ์ด M์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 1,000,000, 1 โ‰ค M โ‰ค 2,000,000,000)

    • ๋‘˜์งธ ์ค„์—๋Š” ๋‚˜๋ฌด์˜ ๋†’์ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‚˜๋ฌด์˜ ๋†’์ด์˜ ํ•ฉ์€ ํ•ญ์ƒ M์„ ๋„˜๊ธฐ ๋•Œ๋ฌธ์—, ์ƒ๊ทผ์ด๋Š” ์ง‘์— ํ•„์š”ํ•œ ๋‚˜๋ฌด๋ฅผ ํ•ญ์ƒ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋†’์ด๋Š” 1,000,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์–‘์˜ ์ •์ˆ˜ ๋˜๋Š” 0์ด๋‹ค.

  • ์ถœ๋ ฅ

    • ์ ์–ด๋„ M๋ฏธํ„ฐ์˜ ๋‚˜๋ฌด๋ฅผ ์ง‘์— ๊ฐ€์ ธ๊ฐ€๊ธฐ ์œ„ํ•ด์„œ ์ ˆ๋‹จ๊ธฐ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋†’์ด์˜ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

  • ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๋ณด๋ฅ˜


๋’ค๋กœ๊ฐ€๊ธฐ