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

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_25_์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต & ๋ฌธ์ œ ํ’€์ด ๋ณธ๋ฌธ

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

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_25_์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต & ๋ฌธ์ œ ํ’€์ด

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

220208 ์ž‘์„ฑ

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

https://www.youtube.com/watch?v=_kdE7ykab4Q&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=25 

 

 

 

 

 

 

1.  ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต

: ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ O(NlogN) ์€ ๋ณด์žฅ!

 

 

 

 

2. ์„ ํƒ ์ •๋ ฌ๊ณผ ๊ธฐ๋ณธ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ˆ˜ํ–‰ ์‹œ๊ฐ„ ๋น„๊ต

from random import randint
import time

# ๋ฐฐ์—ด์— 10,000 ์ •์ˆ˜ ์‚ฝ์ž…
array = []

for _ in range(10000) :
    # 1~100 ๋žœ๋ค ์ •์ˆ˜
    array.append(randint(1, 100))

# ์‹œ๊ฐ„ ์žฌ๊ธฐ
start_time = time.time()

# ์„ ํƒ ์ •๋ ฌ ์†Œ์Šค์ฝ”๋“œ
for i in range(len(array)) :
    min_index = i
    for j in range(i+1, len(array)) :
        if array[min_index] > array[j] :
            min_index = j
    
    array[i], array[min_index] = array[min_index], array[i]

# ์ธก์ • ์ข…๋ฃŒ
end_time = time.time()
# ์ˆ˜ํ–‰ ์‹œ๊ฐ„
print("์„ ํƒ ์ •๋ ฌ ์„ฑ๋Šฅ ์ธก์ • : ", end_time - start_time)


# ๋ฐฐ์—ด ๋‹ค์‹œ ์ดˆ๊ธฐํ™”
array = []

for _ in range(10000) :
    # 1~100 ๋žœ๋ค ์ •์ˆ˜
    array.append(randint(1, 100))

# ์‹œ๊ฐ„ ์žฌ๊ธฐ
start_time = time.time()

# ๊ธฐ๋ณธ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
array.sort()

# ์ธก์ • ์ข…๋ฃŒ
end_time = time.time()

# ์ˆ˜ํ–‰ ์‹œ๊ฐ„
print("๊ธฐ๋ณธ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ฑ๋Šฅ ์ธก์ • : ", end_time - start_time)

 

 

 

 

 

< ๋ฌธ์ œ1 > ๋‘ ๋ฐฐ์—ด์˜ ์›์†Œ ๊ต์ฒด

: ๋‘๊ฐœ์˜ ๋ฐฐ์—ด A, B ( ๋ชจ๋‘ ์ž์—ฐ์ˆ˜ )

: ์ตœ๋Œ€ K๋ฒˆ ๋ฐ”๊ฟ”์น˜๊ธฐ ์—ฐ์‚ฐ ๊ฐ€๋Šฅ

: ๋ฐ”๊ฟ”์น˜๊ธฐ ์—ฐ์‚ฐ์ด๋ž€, ๋ฐฐ์—ด A์— ์žˆ๋Š” ์›์†Œ ํ•˜๋‚˜์™€ ๋ฐฐ์—ด B์— ์žˆ๋Š” ์›์†Œ๋ฅผ ์„œ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ

: ์ตœ์ข… ๋ชฉํ‘œ๋Š” ๋ฐฐ์—ด A์˜ ๋ชจ๋“  ์›์†Œ์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ใ„ฑใ„ฑ

: N, K, A์™€ B ๋ฐฐ์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์ตœ๋Œ€ K ๋ฒˆ ๋ฐ”๊ฟ”์น˜๊ธฐ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด A ์˜ ๋ชจ๋“  ์›์†Œ์˜ ํ•ฉ ์ตœ๋Œ€๊ฐ’ ์ถœ๋ ฅ

 

1) ๋งค๋ฒˆ ๋ฐฐ์—ด A์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ, ๋ฐฐ์—ด B์—์„œ ๊ฐ€์žฅ ํฐ ์›์†Œ์™€ ๊ต์ฒด

2) A ์— ๋Œ€ํ•ด์„œ ์˜ค๋ฆ„ ์ฐจ์ˆœ, B ์— ๋Œ€ํ•ด์„œ ๋‚ด๋ฆผ ์ฐจ์ˆœ

3) ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์™€ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธํ•˜๋ฉด์„œ, A์˜ ์›์†Œ๊ฐ€ B์˜ ์›์†Œ๋ณด๋‹ค ์ž‘์„ ๋•Œ๋งŒ ๊ต์ฒด ์ˆ˜ํ–‰

 

 

  • python
n, k = map(int, input().split())

a = list(map(int, input().split()))
b = list(map(int, input().split()))

a.sort()    # ์˜ค๋ฆ„์ฐจ์ˆœ
b.sort(reverse = True)    # ๋‚ด๋ฆผ์ฐจ์ˆœ

for i in range(k) :
    if a[i] < b[i] :    # A ์›์†Œ๊ฐ€ B ์›์†Œ๋ณด๋‹ค ์ž‘์œผ๋ฉด
        # ๊ต์ฒด
         a[i], b[i] = b[i], a[i]
    else :
        break

print(sum(a))
print(a)
print(b)

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

using namespace std;

int n, k;
vector<int> a, b;

bool compare(int x, int y) {
    return x > y;
}

int main(void) {
    // N๊ณผ K๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ
    cin >> n >> k;
    // ๋ฐฐ์—ด A์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        a.push_back(x);
    }
    // ๋ฐฐ์—ด B์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        b.push_back(x);
    }
    // ๋ฐฐ์—ด A๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ์ˆ˜ํ–‰
    sort(a.begin(), a.end());
    // ๋ฐฐ์—ด B๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ์ˆ˜ํ–‰
    sort(b.begin(), b.end(), compare);

    // ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ํ™•์ธํ•˜๋ฉฐ, ๋‘ ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ์ตœ๋Œ€ K๋ฒˆ ๋น„๊ต 
    for (int i = 0; i < k; i++) {
        // A์˜ ์›์†Œ๊ฐ€ B์˜ ์›์†Œ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ
        if (a[i] < b[i]) swap(a[i], b[i]); // ๋‘ ์›์†Œ๋ฅผ ๊ต์ฒด
        // A์˜ ์›์†Œ๊ฐ€ B์˜ ์›์†Œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ, ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœ
        else break;
    }

    // ๋ฐฐ์—ด A์˜ ๋ชจ๋“  ์›์†Œ์˜ ํ•ฉ์„ ์ถœ๋ ฅ
    long long result = 0;
    for (int i = 0; i < n; i++) {
        result += a[i];
    }
    cout << result << '\n';
}
  • java
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // N๊ณผ K๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ
        int n = sc.nextInt();
        int k = sc.nextInt();

        // ๋ฐฐ์—ด A์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ
        Integer[] a = new Integer[n];
        for (int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
        }
        // ๋ฐฐ์—ด B์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ
        Integer[] b = new Integer[n];
        for (int i = 0; i < n; i++) {
            b[i] = sc.nextInt();
        }

        // ๋ฐฐ์—ด A๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ์ˆ˜ํ–‰
        Arrays.sort(a);
        // ๋ฐฐ์—ด B๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ์ˆ˜ํ–‰
        Arrays.sort(b, Collections.reverseOrder());

        // ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ํ™•์ธํ•˜๋ฉฐ, ๋‘ ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ์ตœ๋Œ€ K๋ฒˆ ๋น„๊ต 
        for (int i = 0; i < k; i++) {
            // A์˜ ์›์†Œ๊ฐ€ B์˜ ์›์†Œ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ
            if (a[i] < b[i]) {
                // ๋‘ ์›์†Œ๋ฅผ ๊ต์ฒด
                int temp = a[i];
                a[i] = b[i];
                b[i] = temp;
            }
            // A์˜ ์›์†Œ๊ฐ€ B์˜ ์›์†Œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ, ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœ
            else break;
        }

        // ๋ฐฐ์—ด A์˜ ๋ชจ๋“  ์›์†Œ์˜ ํ•ฉ์„ ์ถœ๋ ฅ
        long result = 0;
        for (int i = 0; i < n; i++) {
            result += a[i];
        }
        System.out.println(result);
    }

}

 

 

 

 

 

 

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