๐Ÿ“Algorithm & Codingtest/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ™œ์šฉ๋˜๋Š” ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•

Hush 2022. 3. 27. 14:43

 

 

 

 

 

 

 

heap์ž๋ฃŒํ˜•

1
2
3
4
5
6
import heapq
heap=[]
heapq.heappush(heap,4)
heapq.heappush(heap,6)
result=heapq.heappop(heap)
 
cs

์ด๋•Œ, ๋ฆฌ์ŠคํŠธ๋ฅผ ํž™์˜ ์›์†Œ๋กœ ๋„ฃ์œผ๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์— ๋Œ€ํ•ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ํŒ๋‹จํ•˜์—ฌ ํž™ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋„ฃ๋Š”๋‹ค.

 

deque์ž๋ฃŒํ˜•

1
2
3
4
5
from collections import deque
 
deq=deque([])
deq.appendleft(10)
deq.popleft()
cs

๋‹น์—ฐํžˆ pop์ด๋ž‘ append๋„ ์ง€์›ํ•œ๋‹ค. ๋ฆฌ์ŠคํŠธ์˜ ๋ฐœ์ „ํ˜•ํƒœ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.

 

defaultdict ์ž๋ฃŒํ˜•

ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ณธ dictionary์™€ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์€ ๋™์ผํ•˜๋‹ค.

๋‹จ, ํŒŒ์ด์ฌ dict๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” key๋ฅผ index๋กœ ์ „๋‹ฌ๋ฐ›์•˜์„ ๋•Œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€๋งŒ

defaultdict๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” key๋ฅผ index๋กœ ์ „๋‹ฌ๋ฐ›์•˜์„ ๋•Œ default ๊ฐ’์„ value๋กœ ๋งค์นญ์‹œํ‚จ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์œ ์šฉํ•œ ์ƒํ™ฉ์— ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

default๊ฐ’์€ defaultdictํ•จ์ˆ˜์˜ ์ธ์ž๋กœ int ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด 0, list๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋นˆ ๋ฆฌ์ŠคํŠธ, set์„ ์ „๋‹ฌํ•˜๋ฉด ๋นˆ ์ง‘ํ•ฉ์œผ๋กœ ์ •ํ•œ๋‹ค.

from collections import defaultdict

dic_default_zero = defaultdict(int)

 

๋น ๋ฅธ์ž…๋ ฅ

1
2
3
4
import sys
def FastInput():
    a = sys.stdin.readline().rstrip()
    return a    
cs

์ž…๋ ฅ๋ฐ›์„ ์–‘์ด ๋ฌด์ง€๋ฌด์ง€ ๋งŽ์„๋•Œ ๊ผญ ์จ์•ผํ•˜๋Š” ๋น ๋ฅธ์ž…๋ ฅํ•จ์ˆ˜.

 

 

 

์žฌ๊ท€ํ•จ์ˆ˜ ์ œํ•œ ํ•ด์ œ

import sys
sys.setrecursionlimit(2500)

2500ํšŒ๋กœ ์žฌ๊ท€ ์ œํ•œ์„ ํ•ด์ œํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

 

๋ฌดํ•œ์˜ ํ‘œํ˜„

๋ฌธ์ œ์—์„œ ์ œํ•œ๋œ ์ˆ˜ ์ด์ƒ์˜ ํฐ ์ˆ˜๋ฅผ ๋ฌดํ•œ์„ ํ‘œํ˜„ํ•  ๋ณ€์ˆ˜์— ๋‹ด์•„์ฃผ๋ฉด ๋œ๋‹ค.

๋ณดํ†ต ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

INF = int(1e9)

 

 

๋ฌธ์ž์—ด ๋’ค์ง‘๊ธฐ

string = string[::-1]

[start : stop : step] ์ž„์„ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๋ฌธ์ž์—ด์€ ๋ฆฌ์ŠคํŠธ์ฒ˜๋Ÿผ .reverse() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ๊ธฐ์–ตํ•˜์ž.

 

์ง„์ˆ˜ ๋ณ€ํ™˜

10์ง„์ˆ˜๋ฅผ N์ง„์ˆ˜๋กœ

num = str(num)
num = int(num, N)

 

int(string, base)๋ฅผ ํ™œ์šฉํ•œ๋‹ค. base์— ๋ช‡ ์ง„์ˆ˜๋กœ ๋ฐ”๊ฟ€์ง€๋ฅผ ์ž์—ฐ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋ฉด๋œ๋‹ค.

 

N์ง„์ˆ˜๋ฅผ 10์ง„์ˆ˜๋กœ

answer=""
while 1:
    answer+=str(num % 3)
    num = num // 3
    if num == 0:
        break
answer = int(answer[::-1])

๊ณ„์‚ฐ์„ ํ†ตํ•ด N์ง„์ˆ˜ ํ‘œํ˜„์„ ๊ณ„์‚ฐํ•œ๋‹ค.

๋ฌธ์ž์—ด์„ ๋’ค์ง‘๋Š” ํ…Œํฌ๋‹‰์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ์ฃผ๋ชฉํ•˜์ž.

 

์†Œ์ˆ˜ ํŒ๋ณ„

import math

# ์†Œ์ˆ˜ ํŒ๋ณ„ ํ•จ์ˆ˜
def is_prime_number(x):
    if x < 2 : return False # 1๋˜๋Š” 0 ์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹˜    
    for i in range(2, int(math.sqrt(x)) + 1):# 2๋ถ€ํ„ฐ x์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋ฉฐ
        if x % i == 0:# x๊ฐ€ ํ•ด๋‹น ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง„๋‹ค๋ฉด
            return False # ์†Œ์ˆ˜๊ฐ€ ์•„๋‹˜
    return True # ์†Œ์ˆ˜์ž„

 

deepcopy

2์ฐจ์› ์ด์ƒ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณต์‚ฌํ• ๋•Œ ๋‚ด์šฉ๋งŒ ๋ณต์‚ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ  deepcopy๋ฅผ ์‚ฌ์šฉํ•˜์ž.

import copy

result = copy.deepcopy(copy_target)

 

์ˆœ์—ด๊ณผ ์กฐํ•ฉ

items = ['1', '2', '3', '4', '5']

from itertools import permutations
list(permutations(items, 2))
# [('1', '2'), ('1', '3'), ('1', '4'), ('1', '5'), ('2', '1'), ('2', '3'), ('2', '4'), ('2', '5'), ('3', '1'), ('3', '2'), ('3', '4'), ('3', '5'), ('4', '1'), ('4', '2'), ('4', '3'), ('4', '5'), ('5', '1'), ('5', '2'), ('5', '3'), ('5', '4')]

from itertools import combinations
list(combinations(items, 2))
# [('1', '2'), ('1', '3'), ('1', '4'), ('1', '5'), ('2', '3'), ('2', '4'), ('2', '5'), ('3', '4'), ('3', '5'), ('4', '5')]

๊ธฐ๋ณธ์ ์ธ ์ˆœ์—ด๊ณผ ์กฐํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.

 

from itertools import product

items = [['a', 'b', 'c,'], ['1', '2', '3', '4'], ['!', '@', '#']]
list(product(*items))
# [('a', '1', '!'), ('a', '1', '@'), ('a', '1', '#'), ('a', '2', '!'), ('a', '2', '@'), ('a', '2', '#'), ('a', '3', '!'), ('a', '3', '@'), ('a', '3', '#'), ('a', '4', '!'), ('a', '4', '@'), ('a', '4', '#'), ('b', '1', '!'), ('b', '1', '@'), ('b', '1', '#'), ('b', '2', '!'), ('b', '2', '@'), ('b', '2', '#'), ('b', '3', '!'), ('b', '3', '@'), ('b', '3', '#'), ('b', '4', '!'), ('b', '4', '@'), ('b', '4', '#'), ('c,', '1', '!'), ('c,', '1', '@'), ('c,', '1', '#'), ('c,', '2', '!'), ('c,', '2', '@'), ('c,', '2', '#'), ('c,', '3', '!'), ('c,', '3', '@'), ('c,', '3', '#'), ('c,', '4', '!'), ('c,', '4', '@'), ('c,', '4', '#')]

๋‘๊ฐœ ์ด์ƒ์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“œ๋Š” ์กฐํ•ฉ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋Œ๋ ค์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.