๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[์ด๊ฒ์ด ์ฝ๋ฉ ํ ์คํธ๋ค with Python]_24_๊ณ์์ ๋ ฌ ๋ณธ๋ฌธ
[์ด๊ฒ์ด ์ฝ๋ฉ ํ ์คํธ๋ค with Python]_24_๊ณ์์ ๋ ฌ
์ง์ง์ํ์นด 2022. 2. 8. 01:28220208 ์์ฑ
<๋ณธ ๋ธ๋ก๊ทธ๋ ใ์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉ ํ ์คํธ๋คใ ์ 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)