์•Œ๊ณ ๋ฆฌ์ฆ˜๐Ÿฅš/๋ฌธ์ œํ’€์ด (Python)

[python] 0. ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (4/26 ์—…๋ฐ์ดํŠธ)

๐Ÿช„ํ•˜๋ฃจ๐Ÿช„ 2023. 4. 20. 18:42
728x90

๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉ๋ก ๋ฆฌ์ŠคํŠธ์ด๋‹ค.

 

๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์–ด๋– ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๋Š”์ง€ ์ •๋ฆฌํ•ด ๋ณด์ž.

 

๐Ÿช…import collections

dictionary, list, set, tuple ์ž๋ฃŒํ˜•์— ๋Œ€ํ•œ ๋Œ€์•ˆ์„ ์ œ๊ณตํ•œ๋‹ค.

ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€ ์ฐธ๊ณ (https://steady-eschoi.tistory.com/5)

 

๐Ÿช…import heapq

์ด์ง„ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์ตœ์†Œ heap ์•Œ๊ณ ๋ฆฌ์ฆ˜(๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์€ ํ•ญ์ƒ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์Œ)์„ ์ œ๊ณตํ•œ๋‹ค.

๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์€ heap [0]์— ์œ„์น˜

  • heappush
  • heappop
  • heappushpop
  • heapreplace
  • heapify
  • nlargest
  • nsmallest
from heapq import *
 
#ํž™ ๋ชจ๋“ˆ์˜ ํž™ํ ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ๋ฐฐ์—ด ์„ ์–ธ
h=[]
 
#์„ ์–ธ ๋œ ๋ฐฐ์—ด์— ์š”์†Œ ์ถ”๊ฐ€
heappush(h, value)

#์„ ์–ธ ๋œ ๋ฐฐ์—ด์—์„œ ์ œ์ผ ์ž‘์€ ์š”์†Œ ํ•˜๋‚˜ ๊บผ๋‚ด๊ธฐ
heappop(h)

#์„ ์–ธ ๋œ ๋ฐฐ์—ด์—์„œ push ์—ฐ์‚ฐ ๋’ค ๋ฐ”๋กœ pop ์—ฐ์‚ฐ ์‹คํ–‰
heapq.heappushpop(h, value)
#์„ ์–ธ ๋œ ๋ฐฐ์—ด์—์„œ pop ์—ฐ์‚ฐ ๋’ค ๋ฐ”๋กœ push ์—ฐ์‚ฐ ์‹คํ–‰
heapq.heapreplace(h, value)

#๋ฐฐ์—ด์„ ํž™ ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜
heapq.heapify(x)

#ํž™์—์„œ n๊ฐœ์˜ ์ œ์ผ ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜
heapq.nlargest(n, iterable, key=None)
#ํž™์—์„œ n๊ฐœ์˜ ์ œ์ผ ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜
heapq.nsmallest(n, iterable, key=None)

 

๐Ÿช…import functools

๊ณ ์ฐจ์› ํ•จ์ˆ˜๋ฅผ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๋ชจ๋“ˆ๋กœ ํ•จ์ˆ˜์— ์ ์šฉํ•˜๊ฑฐ๋‚˜, ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ชจ๋“ˆ์ด๋‹ค.

  • @lru_cached
  • cmp_to_key
  • @total_ordering
  • partial
  • reduce
#lru_cached : ์บ์‹œ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ํ•จ์ˆ˜ ์—ฐ์‚ฐ ์‹œ๊ฐ„์„ ์ค„์—ฌ์คŒ
from functools import lru_cache
@lru_cached(maxsize=128)
def ํ•จ์ˆ˜๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜):


#cmp_to_key : ์ •๋ ฌ ํ•จ์ˆ˜์˜ key์— ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ
from functools import cmp_to_key
sorted(key=์›ํ•˜๋Š” ํ•จ์ˆ˜, reverse=False) 
ex) sorted(๋ฆฌ์ŠคํŠธ, key=len) >> ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ์˜ ๊ธธ์ด ์ˆœ์„œ๋Œ€๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ


#total_ordering : ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด๋ผ๋ฆฌ ๋น„๊ต(๋น„๊ต์—ฐ์‚ฐ์ž ์‚ฌ์šฉ)ํ•˜๊ฑฐ๋‚˜ ์ •๋ ฌ
from functools import total_ordering
@total_ordering
class ํด๋ž˜์Šค๋ช…:
# ๋น„๊ต : ๊ฐ์ฒด1 ๋น„๊ต์—ฐ์‚ฐ์ž ๊ฐ์ฒด2
# ์ •๋ ฌ : ๊ฐ์ฒด๋ฅผ ์›์†Œ๋กœ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด.sort(reverse=False)


#partial : ํ•จ์ˆ˜์˜ ํŠน์ • ์ธ์ž๋ฅผ๊ณ ์ •์‹œ์ผœ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋กœ ์ •์˜
from functools import partial
์ƒˆ๋กœ์šด_ํ•จ์ˆ˜๋ช…=partial(ํ•จ์ˆ˜๋ช…, ๊ณ ์ •์‹œํ‚ฌ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ’)


#reduce : ํ•จ์ˆ˜ ์—ฐ์‚ฐ์„ ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋ˆ„์  ์—ฐ์‚ฐ
from functools import reduce
reduce(ํ•จ์ˆ˜๋ช…, ์ดํ„ฐ๋Ÿฌ๋ธ”๊ฐ์ฒด)
ex) reduce(lambda a, b : a+b, [0,1,2,3,4]) >> 10

cf) ์บ์‹ฑ : ์ ‘๊ทผํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผ ์†๋„๊ฐ€ ๋น ๋ฅธ ์ €์žฅ์†Œ์— ์ €์žฅํ•ด ๋‘๊ณ  ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜,

์‹คํ–‰ํ•˜๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์—ฐ์‚ฐ์„ ์ตœ์ดˆ๋งŒ ๊ณ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•-์žฌ๊ท€ ํ•จ์ˆ˜์—์„œ ํŠนํžˆ ์œ ์šฉํ•˜๋‹ค.

 

๐Ÿช…import itertools

ํšจ์œจ์ ์ธ ๋ฐ˜๋ณต์„ ์œ„ํ•ด ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ชจ๋“ˆ์ด๋‹ค.

๊ด€๋ จ ํ•จ์ˆ˜๊ฐ€ ๋งŽ์œผ๋‹ˆ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž (https://docs.python.org/3/library/itertools.html)

  • ๋ฌดํ•œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฐ์ถœํ•˜๋Š” ํ•จ์ˆ˜
    • count(์ˆซ์ž) >> ์ˆซ์ž๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€
    • cycle(๋ฌธ์ž์—ด) >> ๋ฌธ์ž ๊ฐ๊ฐ ์›์†Œ๋กœ ๋งŒ๋“ค์–ด ๋ฐ˜๋ณต
    • repeat(๋ฐ˜๋ณตํ•  ์š”์†Œ, ์ˆซ์ž) >> ์ˆซ์ž๋งŒํผ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณต

 

  • ์œ ํ•œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฐ์ถœํ•˜๋Š” ํ•จ์ˆ˜
    • accumulate
    • chain
    • chain.from_iterable
    • compress
    • dropwhile
    • filterfalse
    • groupby
    • islice
    • pairwise
    • starmap
    • takewhile
    • tee
    • zip_longest

 

  • ์กฐํ•ฉํ˜• ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฐ์ถœํ•˜๋Š” ํ•จ์ˆ˜
    • product(๋ฌธ์ž์—ด, repeat=์ˆซ์ž) : ์ˆซ์ž ์นธ์˜ ์ž๋ฆฌ์— ๋ฌธ์ž์—ด ์š”์†Œ๋ฅผ ์ค‘๋ณต ์ถ”์ถœํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜ ์กฐํ•ฉ 
    • permutations(๋ฌธ์ž์—ด, ์ˆซ์ž) : ์ˆซ์ž ์นธ์˜ ์ž๋ฆฌ์— ๋ฌธ์ž์—ด ์š”์†Œ๋ฅผ ์ค„์„ธ์šฐ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜
    • combinations(๋ฌธ์ž์—ด, ์ˆซ์ž) : ์ˆซ์ž ์นธ์˜ ์ž๋ฆฌ์— ๋ฌธ์ž์—ด ์š”์†Œ์— ์ง๊ฟ์„ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜
    • combinations_with_replacement(๋ฌธ์ž์—ด, ์ˆซ์ž) ์ˆซ์ž ์นธ์˜ ์ž๋ฆฌ์— ๋ฌธ์ž์—ด ์š”์†Œ์— ์ค‘๋ณตํ•ด์„œ ์ง๊ฟ์„ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜
# 1. product
product('ABC' repeat=2)
>> AA, AB, AC, BA, BB, BC, CA, CB, CC

# 2. permutations
permutations('ABC', 2)
>> AB, AC, BA, BC, CA, CB

#3. combinations
combinations('ABC', 2)
>> AB AC BC

#4. combinations_with_replacement('ABC', 2)
>> AA AB AC BB BC BD CC

 

๐Ÿช…import re

์ •๊ทœ์‹ ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์ด๋‹ค.

 

๐Ÿช…import sys

ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

 

๐Ÿช…import math

C ํ‘œ์ค€์—์„œ ์ •์˜๋œ ์ˆ˜ํ•™ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ๊ณตํ•œ๋‹ค

 

๐Ÿช…import bisect

๋ฐฐ์—ด ์ด์ง„ ๋ถ„ํ•  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•œ๋‹ค.

 

๐Ÿช…from typing import * 

๋‹ค์–‘ํ•œ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์ด๋‹ค.

 

 

 

์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ๋ชจ๋“ˆ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ ์ž์ฃผ ๋‚˜์˜ค๋Š” ์—ฐ์‚ฐ๋“ค์„ ์ •๋ฆฌํ•˜๋ ค ํ•œ๋‹ค.

728x90