๐Ÿงฉ Algorithm/[Programmers] Level 2

[Programmers] L2. ์ตœ์†Ÿ๊ฐ’ ๋งŒ๋“ค๊ธฐ (Python)

devCloud 2024. 11. 8. 17:12
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ’€์ด ๋ฐฉ๋ฒ•

๐Ÿ’ก A ๋ฆฌ์ŠคํŠธ์˜ ์ตœ์†Œ์™€ B ๋ฆฌ์ŠคํŠธ์˜ ์ตœ๋Œ€์˜ ๊ณฑ, sort() ์‚ฌ์šฉ

 

A ๋ฆฌ์ŠคํŠธ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, B ๋ฆฌ์ŠคํŠธ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.

 

์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

A.sort()

 

๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

B.sort(reverse=True)

 

๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค ์—ฐ์‚ฐ์„ ํ•œ๋‹ค.

 

Solution

def solution(A, B):
    answer = 0
    A.sort(), B.sort(reverse=True)  # ์ •๋ ฌ

    for i in range(len(A)):
        answer += A[i] * B[i]

    return answer

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

์ดˆ๊ธฐ ์ฝ”๋“œ(์ •ํ™•์„ฑ O, ํšจ์œจ์„ฑ X)

def solution(A,B):
    answer = 0
    A = sorted(A)
    B = sorted(B) # ์ •๋ ฌ

    for i in range(len(A)):
        if min(A, B) == A:  # ์ตœ์†Œ๊ฐ’์ด A ๋ฆฌ์ŠคํŠธ์— ์žˆ์„ ๊ฒฝ์šฐ
            answer += A.pop(0) * B.pop()  # ์ตœ์†Œ๊ฐ’์ธ ๋งจ ์•ž ์š”์†Œ, ์ตœ๋Œ“๊ฐ‘์ธ ๋งจ ๋’ค ์š”์†Œ ๊บผ๋‚ธ ํ›„ ์—ฐ์‚ฐ
        else:  # ์ตœ์†Œ๊ฐ’์ด B ๋ฆฌ์ŠคํŠธ์— ์žˆ์„ ๊ฒฝ์šฐ
            answer += A.pop() * B.pop(0)

    return answer

 

ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ ์‹คํŒจ์˜ ์›์ธ

๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ pop(0)์„ ์‚ฌ์šฉํ•ด ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. pop(0)์€ ๋ฆฌ์ŠคํŠธ ์ „์ฒด๋ฅผ ํ•œ ์นธ์”ฉ ์ด๋™์‹œํ‚ค๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์ด ๋˜์–ด, ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ํด ๋•Œ ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

๋‘ ๋ฆฌ์ŠคํŠธ ์ค‘์— ์ตœ์†Œ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ธฐ์ค€์œผ๋กœ ์—ฐ์‚ฐ์„ ํ•ด์•ผ ํ•˜๋Š” ๊ฑด ์ค„ ์•Œ์•˜๋Š”๋ฐ, ์‚ฌ์‹ค ์–ด๋–ป๊ฒŒ ํ•˜๋“  ๋˜‘๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ธ๋‹ค.

๊ทธ๋ž˜์„œ ๊ตณ์ด min() ํ•จ์ˆ˜๋‚˜, pop() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ •๋ ฌ์„ ์–ด๋–ป๊ฒŒ ํ•˜๋А๋ƒ๊ฐ€ ์ค‘์š”ํ•œ ๋ฌธ์ œ์˜€๋‹ค.

 


 

728x90