Skip to content

Latest commit

ย 

History

History
195 lines (144 loc) ยท 5.59 KB

week_02.md

File metadata and controls

195 lines (144 loc) ยท 5.59 KB

2์ฃผ์ฐจ-์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์†Œ๊ฐœ


์ •๋ ฌ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ


์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ด์ง„ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ ˆ์ฐจ

Video


O(nยฒ)

๊ณ„์‚ฐ ์‹œ๊ฐ„์ด ์ •๋ ฌํ•  ์ž๋ฃŒ ์ˆ˜์˜ ์ œ๊ณฑ์— ๋น„๋ก€ํ•˜์—ฌ ์ฆ๊ฐ€

1๋งŒ ๊ฐœ๋ฅผ 1์ดˆ์— ์ •๋ ฌํ•˜๋ฉด 10๋งŒ ๊ฐœ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฐ์—๋Š” 100์ดˆ ์ •๋„๊ฐ€ ํ•„์š”

  • ๋ฒ„๋ธ” ์ •๋ ฌ

    • ์ธ์ ‘ํ•œ ๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•ด๊ฐ€๋ฉด์„œ ์ •๋ ฌ์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹
    • ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋ฐฐ์—ด์˜ ๋งจ ๋์—๋‹ค ์ด๋™์‹œํ‚ค๋ฉด์„œ ์ •๋ ฌํ•˜๊ณ ์ž ํ•˜๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜ ๋งŒํผ ๋‘ ๋ฒˆ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • ์„ ํƒ ์ •๋ ฌ

    • ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์†ํ•ด์„œ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋น„๊ตํ•˜๊ณ  ์žˆ๋Š” ๊ฐ’์˜ index ๋ฅผ ์ €์žฅํ•œ๋‹ค.
    • ์ตœ์ข…์ ์œผ๋กœ ์ €์žฅ๋œ ์ธ๋ฑ์Šค๋ฅผ ํ•œ ๋ฒˆ๋งŒ ๋ฐ”๊ฟ”์ค€๋‹ค.
  • ์‚ฝ์ž… ์ •๋ ฌ

    • k๋ฒˆ์งธ ์›์†Œ๋ฅผ 1๋ถ€ํ„ฐ k-1๊นŒ์ง€์™€ ๋น„๊ตํ•ด ์ ์ ˆํ•œ ์œ„์น˜์— ๋ผ์›Œ๋„ฃ๊ณ  ๊ทธ ๋’ค์˜ ์ž๋ฃŒ๋ฅผ ํ•œ ์นธ์”ฉ ๋’ค๋กœ ๋ฐ€์–ด๋‚ด๋Š” ๋ฐฉ์‹

O(n log n)

์ž…๋ ฅ๊ฐ’ n ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋‹จ๊ณ„๋“ค์ด ์—ฐ์‚ฐ์˜ ํŠน์ • ์š”์ธ์— ์˜ํ•ด ๊ฐ์†Œ

  • ๋ณ‘ํ•ฉ ์ •๋ ฌ

    • ์ •๋ ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์ •๋ ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ์›๋ฆฌ
  • ํž™ ์ •๋ ฌ : ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์กด์žฌ

    1. ์ •๋ ฌ์˜ ๋Œ€์ƒ์ธ ๋ฐ์ดํ„ฐ๋“ค์„ ํž™์— ๋„ฃ์—ˆ๋‹ค๊ฐ€ ๊บผ๋‚ด๋Š” ์›๋ฆฌ
    2. ๊ธฐ์กด์˜ ๋ฐฐ์—ด์„ heapify(heap ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ณผ์ •)์„ ๊ฑฐ์ณ ๊บผ๋‚ด๋Š” ์›๋ฆฌ
  • ํ€ต ์ •๋ ฌ

    • ์ ์ ˆํ•œ ์›์†Œ ํ•˜๋‚˜๋ฅผ ๊ธฐ์ค€(ํ”ผ๋ฒ—, pivot)์œผ๋กœ ์‚ผ์•„ ๊ทธ๋ณด๋‹ค ์ž‘์€ ๊ฒƒ์„ ์•ž์œผ๋กœ ๋นผ๋‚ด๊ณ  ๊ทธ ๋’ค์— ํ”ผ๋ฒ—์„ ์˜ฎ๊ฒจ ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๊ฒƒ, ํฐ ๊ฒƒ์œผ๋กœ ๋‚˜๋ˆˆ๋’ค ๋‚˜๋ˆ„์–ด์ง„ ๊ฐ๊ฐ์—์„œ ๋‹ค์‹œ ํ”ผ๋ฒ—์„ ์žก๊ณ  ์ •๋ ฌํ•ด์„œ ๊ฐ๊ฐ์˜ ํฌ๊ธฐ๊ฐ€ 0์ด๋‚˜ 1์ด ๋  ๋•Œ๊นŒ์ง€ ์ •๋ ฌ


2์ฃผ์ฐจ - ๋ฌธ์ œํ’€๊ธฐ(์ •๋ ฌ)

  • 1๋ฒˆ - ์ •๋ ฌ ๊ธฐ์ดˆ

    - "์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐ"
    
    // ์ฃผ์–ด์ง€๋Š” ๊ฐ’
    int[] n = {8,1,45,21,22,37,6,8,2,79};
    
    void solution1(int[] n){
        int maxNum = 0
        int minNum = 0;
    
        // ์ฝ”๋“œ ์ž‘์„ฑ
    
        System.out.println("์ตœ๋Œ“๊ฐ’์€ : " + maxNum);
        System.out.println("์ตœ์†Ÿ๊ฐ’์€ : " + minNum);
    }
  • 2๋ฒˆ - ๋ฐฐ์—ด ๊ธฐ์ดˆ

    - "1+2+4+7+11+16+...+i ์˜ ์ˆœ์„œ๋กœ ๋‚˜์—ด๋œ ์ˆ˜์—ด์˜ i๋ฒˆ์งธ ํ•ญ๊นŒ์ง€์˜ ํ•ฉ ๊ตฌํ•˜๊ธฐ"
    
    // ์ฃผ์–ด์ง€๋Š” ๊ฐ’
    int i = 10; // 10๋ฒˆ์งธ ํ•ญ๊นŒ์ง€์˜ ํ•ฉ
    
    void solution2(int i){
        int sumValue = 0;
    
        // ์ฝ”๋“œ ์ž‘์„ฑ
    
        System.out.println(i + "๋ฒˆ์งธ ํ•ญ๊นŒ์ง€์˜ ํ•ฉ : " + sumValue);
    }
  • 3๋ฒˆ - ๋ฐฐ์—ด ๊ธฐ์ดˆ

    - "1-2+3-4+5-6+...+99-100์˜ ํ•ฉ ๊ตฌํ•˜๊ธฐ"
    
    // ์ฃผ์–ด์ง€๋Š” ๊ฐ’ ์—†์Œ
    
    void solution3(){
        int sumValue = 0;
    
        // ์ฝ”๋“œ ์ž‘์„ฑ
    
        System.out.println("์ดํ•ฉ : " + sumValue);
    }
  • 4๋ฒˆ - ์ •๋ ฌ ๊ธฐ์ดˆ

    - "int ๋ฐฐ์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค."
    
    // ์ฃผ์–ด์ง€๋Š” ๊ฐ’
    int[] n = {8,1,45,21,22,37,6,8,2,79};
    
    void solution4(int[] n){
        int[] answer = {};
    
        // ์ฝ”๋“œ ์ž‘์„ฑ
    
        for(int answers : answer)
            System.out.print(answers + ", ");
    }
  • 5๋ฒˆ - ๋ฐฑ์ค€์•Œ๊ณ ๋ฆฌ์ฆ˜

    - "์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ N๊ฐœ์˜ ๋‹จ์–ด๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค."
      * > ๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ
      * > ๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์‚ฌ์ „ ์ˆœ์œผ๋กœ
    
    // ์Šค์บ๋„ˆ ์‚ฌ์šฉ์‹œ
    void solution5(){
        Scanner sc = new Scanner(System.in);
        int count = Integer.parseInt(sc.nextLine().trim());
    
        // ์ฝ”๋“œ ์ž‘์„ฑ
    }
    
    // ๋ฒ„ํผ๋“œ๋ฆฌ๋” ์‚ฌ์šฉ์‹œ
    void solution5(){
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
    
        // ์ฝ”๋“œ ์ž‘์„ฑ
    }
  • 6๋ฒˆ - ์ •๋ ฌ ๊ธฐ์ดˆ

    - "์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ๊ทธ ์ˆ˜์˜ ๊ฐ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์‹œ์˜ค."
    
    // ์ฃผ์–ด์ง€๋Š” ๊ฐ’
    int n = 153248976
    
    void solution6(int n){
        String answer = "";
    
        // ์ฝ”๋“œ ์ž‘์„ฑ
    
        System.out.println("์ •๋ ฌ๋œ ์ˆ˜ : " + answer);
    }
  • 7๋ฒˆ - ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

    - "0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค."
      * > ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6210์ด๋‹ค.
      * > 0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.
    
    // ์ฃผ์–ด์ง€๋Š” ๊ฐ’
    int[] n = {3, 30, 34, 5, 9};
    
    String solution7(int[] n){
        String answer = "";
    
        // ์ฝ”๋“œ ์ž‘์„ฑ
    
        System.out.println("์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“  ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” : " + answer);
        return answer;
    }


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