Skip to content

Instantly share code, notes, and snippets.

View dongwooklee96's full-sized avatar
🐘
Focusing

Lee Dong Wook dongwooklee96

🐘
Focusing
View GitHub Profile
@dongwooklee96
dongwooklee96 / main.py
Created August 3, 2021 14:44
set vs dict
import time
import random
import pytest
nums = list(random.randint(1, 100) for _ in range(100))
@pytest.mark.benchmark(
min_rounds=10000000,
"""
# 문제 : 3번째 큰 수
- λ°°μ—΄μ—μ„œ 3번재둜 큰 수λ₯Ό μ°Ύμ•„μ„œ λ°˜ν™˜ν•˜λ„λ‘ ν•˜μž.
- λ§Œμ•½ 3번째둜 큰 μˆ˜κ°€ μ—†λ‹€λ©΄ κ°€μž₯ 큰 수λ₯Ό λ°˜ν™˜ν•˜λ©΄ λœλ‹€. 예λ₯Ό λ“€μ–΄μ„œ 배열에 [1, 2, 3] 이 μžˆλ‹€λ©΄ 1을 λ°˜ν™˜ν•˜κ³ 
3λ²ˆμ§Έκ°€ μ—†λŠ” λ°°μ—΄ [2, 3] 이라면 3을 λ°˜ν™˜ν•˜λ©΄ λœλ‹€.
### 아이디어 (μ •λ ¬)
1. 배열을 μ—­μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.
"""
# 문제 : λΆ€μ‘±ν•œ κΈˆμ•‘ κ³„μ‚°ν•˜κΈ°
- λ†€μ΄κΈ°κ΅¬μ˜ μ›λž˜ μ΄μš©λ£ŒλŠ” price 원이닀.
- 놀이기ꡬλ₯Ό N 번째 μ΄μš©ν•œλ‹€λ©΄ μ›λž˜ 이용료의 Nλ°°λ₯Ό λ°›λŠ” νŒ¨λ„ν‹°κ°€ μžˆλ‹€.
- 예λ₯Ό λ“€μ–΄μ„œ, 처음 μ΄μš©λ£Œκ°€ 100원 μ΄μ˜€λ‹€λ©΄, 2λ²ˆμ§ΈλŠ” 200원 3λ²ˆμ§ΈλŠ” 300원이닀.
-> 놀이기ꡬλ₯Ό {count} 번 νƒ€κ²Œ 되면, ν˜„μž¬ μžμ‹ μ΄ κ°€μ§€κ³  μžˆλŠ” κΈˆμ•‘μ—μ„œ μ–Όλ§ˆκ°€ λͺ¨μžλΌλŠ”μ§€λ₯Ό λ°˜ν™˜ ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜λΌ
-> 단 κΈˆμ•‘μ΄ λΆ€μ‘±ν•˜μ§€ μ•ŠμœΌλ©΄ 0을 λ°˜ν™˜ν•˜λΌ.
"""
문제 6.6 트리 경둜의 ν•©
λ…Έλ“œμ— μ •μˆ˜ν˜• 데이터가 μžˆλŠ” 이진 νŠΈλ¦¬κ°€ μž…λ ₯으둜 μ£Όμ–΄μ§„λ‹€.
각 κ²½λ‘œμ— μžˆλŠ” λ…Έλ“œμ˜ 데이터 합이 νŠΉμ • 값이 λ˜λŠ” κ²½μš°κ°€ λͺ‡ κ°œμΈμ§€ ν™•μΈν•˜λΌ.
κΌ­ 루트 λ…Έλ“œμ—μ„œ μ‹œμž‘ν•  ν•„μš”λŠ” μ—†μœΌλ©°, μ‹œμž‘μ€ λΆ€λͺ¨ λ…Έλ“œμ—μ„œ μžμ‹ λ…Έλ“œ μͺ½μœΌλ‘œ μ΄λ™ν•˜μ—¬ 합을 λ§Œλ“€μ–΄
λ‚˜κ°€μ•Ό ν•œλ‹€. μžμ‹ λ…Έλ“œμ—μ„œ μœ„λ‘œ μ˜¬λΌκ°€λŠ” κ²½μš°λŠ” μ—†λ‹€.
### μ œν•œ 사항
@dongwooklee96
dongwooklee96 / main.py
Created July 30, 2021 11:59
깊이 μš°μ„  탐색, λ„ˆλΉ„ μš°μ„  탐색, νž™
"""
# 깊이 μš°μ„  탐색, λ„ˆλΉ„ μš°μ„  탐색, 그리고 이진 νž™
### 깊이 μš°μ„  탐색 (Depth-First Search)
깊이 μš°μ„  νƒμƒ‰μ˜ ν‚€μ›Œλ“œλŠ” 'μŠ€νƒ (Stack)' 이닀.
μ•ž μ˜ˆμ œμ—μ„œ μ‚¬μš©ν•œ νŠΈλ¦¬μ— 깊이 μš°μ„  νƒμƒ‰μœΌλ‘œ λ…Έλ“œλ₯Ό 방문을 ν•΄λ³΄μž.
### λ„ˆλΉ„ μš°μ„  탐색 (Breadth-First Search)
@dongwooklee96
dongwooklee96 / main.py
Last active July 30, 2021 10:26
6.2 μ΄μ§„νŠΈλ¦¬
"""
이진 트리λ₯Ό κ΅¬ν˜„ν•˜μ—¬λΌ.
"""
class Node:
def __init__(self, data):
self.left = None
self.right = None
"""
문제 : 버블 정렬을 κ΅¬ν˜„ν•˜μ‹œμ˜€.
"""
from typing import List
def bubble_sort(arr: List[int]):
n = len(arr)
@dongwooklee96
dongwooklee96 / main.py
Created July 27, 2021 14:28
4.4.4 4.4.4
"""
문제 : λ°°μ—΄μ˜ 두 λΆ€λΆ„μ§‘ν•©μ˜ μ΅œμ†Œ 차이 λ§Œλ“€κΈ°
배열을 두 뢀뢄집합을 λ§Œλ“€κ³  각 λΆ€λΆ„μ§‘ν•©μ˜ ν•© 차이가 μ΅œμ†Œκ°€ λ˜λŠ” 값을 λ°˜ν™˜ν•˜λΌ
예λ₯Ό λ“€μ–΄μ„œ [3, 2, 7, 4, 1]이 μ£Όμ–΄μ§€λ©΄ λΆ€λΆ„μ§‘ν•©μ˜ ν•© 차이가 μ΅œμ†Œκ°€ 되게 ν•˜λ €λ©΄,
ν•˜λ‚˜λŠ” [1, 7]이 되고, λ‹€λ₯Έ ν•˜λ‚˜λŠ” [2, 3, 4]κ°€ λ˜μ—ˆμ„ λ•Œ 각 λΆ€λΆ„μ§‘ν•©μ˜ 합은 8κ³Ό 9κ°€ λ˜μ–΄μ„œ 차이가 1이 λœλ‹€.
μ΄λ•Œ 1을 λ°˜ν™˜ν•˜λ„λ‘ κ΅¬ν˜„ν•˜λŠ” 것이닀.
"""
import sys
"""
문제 4.4.3 동전 κ΅ν™˜
κ°€κ²Œμ— κ°€μ„œ, 물건을 사고 물건 값을 μ§€λΆˆν•˜κ³  남은 μž”λˆμ„ 거슬둜 μ£ΌλŠ” 과정을 μ½”λ”©ν•˜λŠ”λ°
κ°€μž₯ 적은 개수의 λ™μ „μœΌλ‘œ λ°˜ν™˜ν•΄μ•Όν•˜λŠ” 것이 λ¬Έμ œμ΄λ‹€. μž”λˆμœΌλ‘œ 거슬러 μ£ΌλŠ” λ™μ „μ˜ 값을
λ°°μ—΄λ‘œ μž…λ ₯ λ°›λŠ”λ°, 예λ₯Ό λ“€μ–΄ [1, 2, 5] 이고 κ±°μŠ¬λŸ¬μ€˜μ•Ό ν•˜λŠ” 돈이 11이라면 [5, 5, 1] 둜 3개λ₯Ό
거슬러 μ£ΌλŠ” 것이 κ°€μž₯ 적은 λ™μ „μ˜ 개수둜 λ°˜ν™˜ν•œ 것이닀.
"""
import sys
from typing import List
"""
문제 4.4.2 λͺ¨λ“  λ¬Έμžμ—΄ μΉ˜ν™˜
μž…λ ₯으둜 μ£Όμ–΄μ§„ λ¬Έμžμ—΄μ˜ κ°€λŠ₯ν•œ μΉ˜ν™˜μ„ λͺ¨λ‘ 좜λ ₯ν•΄λ³΄λŠ” λ¬Έμ œμ΄λ‹€.
예λ₯Ό λ“€μ–΄, μž…λ ₯된 λ¬Έμžμ—΄μ΄ 'abc' 라면 κ²°κ³ΌλŠ” ["abc", "acb", "bac", "cab", "cba"] κ°€ λ˜μ–΄μ•Ό ν•œλ‹€.
각 λ¬Έμžκ°€ λ†“μ΄λŠ” λͺ¨λ“  μœ„μΉ˜μ˜ 쑰합을 λ§Œλ“€μ–΄λΌ.
"""
from typing import List