๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_24_๊ณ„์ˆ˜์ •๋ ฌ ๋ณธ๋ฌธ

๐Ÿฆฅ ์ฝ”ํ…Œ/์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with python

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_24_๊ณ„์ˆ˜์ •๋ ฌ

์ง•์ง•์•ŒํŒŒ์นด 2022. 2. 8. 01:28
728x90
๋ฐ˜์‘ํ˜•

220208 ์ž‘์„ฑ

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” ใ€Ž์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹คใ€ ์˜ youtube๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค>

https://www.youtube.com/watch?v=65Ui3RNibRA&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=24 

 

 

 

 

 

 

 

1. ๊ณ„์ˆ˜ ์ •๋ ฌ

: ํŠน์ •ํ•œ ์กฐ๊ฑด์ด ๋ถ€ํ•ฉํ•  ๋Œ€ ์‚ฌ์šฉ, ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋™์ž‘

: ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ ๋ฒ”์œ„๊ฐ€ ์ œํ•œ๋˜์–ด ์ •์ˆ˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ๊ฐ€๋Šฅ

: ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ N, ๋ฐ์ดํ„ฐ(์–‘์ˆ˜) ์ค‘ ์ตœ๋Œ€๊ฐ’์ด k์ผ ๋•Œ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์ˆ˜ํ–‰ ์‹œ๊ฐ„ O(N + K)s

 

1) ๊ฐ€์žฅ ์ž‘์€ ~ ํฐ ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๊ฐ€ ๋ชจ๋‘ ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

2) ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ฐ’๊ณผ ๋™์ผํ•œ ์ธ๋ฑ์Šค์˜ ๋ฐ์ดํ„ฐ 1์”ฉ ์ฆ๊ฐ€!

....

๊ณ„์† ๋ฐ˜๋ณต

3) ๊ฒฐ๊ณผ ํ™•์ธํ•  ๋•Œ, ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๊ทธ ๊ฐ’ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ธ๋ฑ์Šค ์ถœ๋ ฅ!!!

 

 

 

 

  • python
# ๋ชจ๋“  ์›์†Œ๊ฐ€ 0๋ณด๋‹ค ํฌ๋‹ค๊ณ  ๊ฐ€์ •
array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8, 0, 5, 2, 1, 4]
# ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฆฌ์ŠคํŠธ ์„ ์–ธ ( ๋ชจ๋“  ๊ฐ’ 0์œผ๋กœ ์ดˆ๊ธฐํ™” )
count = [0] * (max(array) + 1)

for i in range(len(array)) :
    count[array[i]] += 1  # ๊ฐ ๋ฐ์ดํ„ฐ ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค ๊ฐ’ ์ฆ๊ฐ€

for i in range(len(count)) :
    for j in range(count[i]) :
        print(i, end = " ")   # ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ๋œ ๋“ฑ์žฅ ํšŸ์ˆ˜๋งŒํผ ์ธ๋ฑ์Šค  ์ถœ๋ ฅ

  • c++
#include <bits/stdc++.h>
#define MAX_VALUE 9

using namespace std;

int n = 15;
// ๋ชจ๋“  ์›์†Œ์˜ ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •
int arr[15] = {7, 5, 9, 0, 3, 1, 6, 2, 9, 1, 4, 8, 0, 5, 2};
// ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด ์„ ์–ธ(๋ชจ๋“  ๊ฐ’์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”)
int cnt[MAX_VALUE + 1];

int main(void) {
    for (int i = 0; i < n; i++) {
        cnt[arr[i]] += 1; // ๊ฐ ๋ฐ์ดํ„ฐ์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ๊ฐ’ ์ฆ๊ฐ€
    }
    for (int i = 0; i <= MAX_VALUE; i++) { // ๋ฐฐ์—ด์— ๊ธฐ๋ก๋œ ์ •๋ ฌ ์ •๋ณด ํ™•์ธ
        for (int j = 0; j < cnt[i]; j++) {
            cout << i << ' '; // ๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋“ฑ์žฅํ•œ ํšŸ์ˆ˜๋งŒํผ ์ธ๋ฑ์Šค ์ถœ๋ ฅ
        }
    }
}
© 2022 GitHub, Inc.
  • java
import java.util.*;

public class Main {
	
    public static final int MAX_VALUE = 9;

    public static void main(String[] args) {
    	
        int n = 15;
        // ๋ชจ๋“  ์›์†Œ์˜ ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •
        int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 9, 1, 4, 8, 0, 5, 2};
        // ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด ์„ ์–ธ(๋ชจ๋“  ๊ฐ’์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”)
        int[] cnt = new int[MAX_VALUE + 1];

        for (int i = 0; i < n; i++) {
            cnt[arr[i]] += 1; // ๊ฐ ๋ฐ์ดํ„ฐ์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ๊ฐ’ ์ฆ๊ฐ€
        }
        for (int i = 0; i <= MAX_VALUE; i++) { // ๋ฐฐ์—ด์— ๊ธฐ๋ก๋œ ์ •๋ ฌ ์ •๋ณด ํ™•์ธ
            for (int j = 0; j < cnt[i]; j++) {
                System.out.print(i + " "); // ๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋“ฑ์žฅํ•œ ํšŸ์ˆ˜๋งŒํผ ์ธ๋ฑ์Šค ์ถœ๋ ฅ
            }
        }
    }

}

 

 

 

 

 

 

2. ๊ณ„์ˆ˜ ์ •๋ ฌ ์‹œ๊ฐ„ ๋ณต์žก๋„

: ์‹œ๊ฐ„ ๋ณต์žก๋„, ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(N + K)

:  ๋•Œ์— ๋”ฐ๋ผ์„œ ์‹ฌ๊ฐํ•œ ๋น„ํšจ์œจ์„ฑ ์ดˆ๋ž˜..             0, 999999 ๋‘๊ฐœ๋งŒ ์ฃผ์–ด์ง„๋‹ค๋ฉด..

: ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ๋“ฑ์žฅ ํ•  ๋•Œ ํšจ๊ณผ์                ๋™์ผํ•œ ์ ์ˆ˜๋Œ€๊ฐ€ ๋งŽ์„ ๋•Œ

=> O(N + K)

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•
Comments