๐Ÿ‘ฉ๐Ÿป‍๐ŸŒพ

[๋ฐฑ์ค€/Python] 2761๋ฒˆ ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2 ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€/Python] 2761๋ฒˆ ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2

์ฅฌ์Šค์ด 2023. 2. 15. 23:06
728x90

1๏ธโƒฃ๋ฌธ์ œ ์„ค๋ช…

N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

2๏ธโƒฃ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋Š” ์ ˆ๋Œ“๊ฐ’์ด 1,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค. ์ˆ˜๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค.

3๏ธโƒฃ์ถœ๋ ฅ

์ฒซ์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.


๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป์ž‘์„ฑํ•œ ์ฝ”๋“œ

1. ๋ณ‘ํ•ฉ์ •๋ ฌ์„ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ

import sys

input = sys.stdin.readline

def merge_sort(list):
    if len(list) <= 1:
        return list
    mid = len(list)//2

    left = merge_sort(list[:mid])
    right = merge_sort(list[mid:])

    i, j, k = 0, 0, 0
    sort_res = []	# ์ •๋ ฌํ•œ ๋ฆฌ์ŠคํŠธ ๋‹ด์„

    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            sort_res.append(left[i])
            i += 1
        else:
            sort_res.append(right[j])
            j += 1
    sort_res += left[i:]
    sort_res += right[j:]

    return sort_res

n = int(input())	# ์ž…๋ ฅ ๋ฐ›์„ ์ˆ˜์˜ ๊ฐœ์ˆ˜

num = []	# ์ž…๋ ฅ ๋ฐ›์€ n๊ฐœ์˜ ์ˆ˜ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ

for i in range(n):
    num.append(int(input()))

num = merge_sort(num)

for i in num:
    print(i)

2. sort() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ

import sys
input = sys.stdin.readline

n = int(input())

num = []

for i in range(n):
    num.append(int(input()))

num.sort()

for i in range(n):
    print(num[i])

๐Ÿ’ก์ฝ”๋“œ ์„ค๋ช…

์ด ๋ฌธ์ œ๋Š” ๋ณ‘ํ•ฉ์ •๋ ฌ๊ณผ sort() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์–ด๋ดค๋‹ค. 

 

๋ณ‘ํ•ฉ์ •๋ ฌ์ด๋ž€?

๋ถ„ํ• ·์ •๋ณต ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜๊ณ  ๋ถ„ํ• ํ•œ ์ง‘ํ•ฉ์„ ์ •๋ ฌํ•˜๋ฉฐ ํ•ฉ์น˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nlogn)์ด๋‹ค.

 

๋ณ‘ํ•ฉ์ •๋ ฌ์„ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ์—์„œ merge_sort() ํ•จ์ˆ˜๋ฅผ ์„ค๋ช…ํ•˜๋ฉด, ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด์„ ๊ธธ์ด๊ฐ€ 1๋ณด๋‹ค ์ž‘์•„์ง€๊ธฐ ์ „๊นŒ์ง€ ๋ฐ˜์œผ๋กœ ๊ณ„์† ๋‚˜๋ˆ„์–ด ๋‘๊ฐœ์˜ ๋ฐฐ์—ด์— ๋‚˜๋ˆ  ๋‹ด์€ ํ›„, ์ •๋ ฌ์„ ์ง„ํ–‰ํ•œ๋‹ค.

 

์ธ๋ฑ์Šค 3๊ฐœ( = i, j, k )๋ฅผ ์„ ์–ธํ•ด์ฃผ๊ณ , while๋ฌธ์—์„œ ๋‘ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋น„๊ตํ–ˆ์„ ๋•Œ ๋” ์ž‘์€ ๊ฐ’์„ sort_res์— appendํ•ด์ฃผ๊ณ , ๋” ์ž‘์€ ๊ฐ’์„ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋˜ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ +1 ํ•ด์ค€๋‹ค.

728x90
Comments