λ ν νΌμ μ νκ²½ κ°μ¬λμ Secure & Generic C κ°μλ₯Ό λ£κ³ , μ 리ν λ΄μ©μ λλ€. ν΄λΉ λ΄μ©μ μ μκΆμ μ νκ²½ κ°μ¬λμκ² μμ΅λλ€. Constant CμΈμ΄μμ μμλ `macro`, `const`, `enum`μΌλ‘ λνλΌ μ μλ€. μ΄ μμ μ μ ν μ¬μ©νμ§ μμΌλ©΄ νΈμμ±μ μ»μ§λ§ μ€λ²ν€λλ₯Ό λ°μμν€κ±°λ, μμΉ μλ κ²°κ³Όλ₯Ό λ§λ€μ΄ λΌ μ μλ€. λ§μ½, `const int size = 3`μ μ¬κ· ν¨μ λ΄μ μ μΈνλ©΄ μ΄λ¨κΉ? ν¨μκ° νΈμΆ λ λλ§λ€ constκ° μ μΈλκ³ ν΄μ λλ―λ‘ μ€λΈν€λκ° λκ² λλ€. λν `switch`μμλ `const`λ₯Ό μ¬μ©ν μ μλ€κ³ λ°°μ΄μμμ κ°μ(index)λ‘λ μ¬μ©ν μ μλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μλ `enum`μ ν΅ν΄ μμλ₯Ό μ μΈνμ¬μΌ νλ€. λͺ μμ κ΄κ³ μ μΈ..
λ ν νΌμ μ νκ²½ κ°μ¬λμ Secure & Generic C κ°μλ₯Ό λ£κ³ , μ 리ν λ΄μ©μ λλ€. ν΄λΉ λ΄μ©μ μ μκΆμ μ νκ²½ κ°μ¬λμκ² μμ΅λλ€. macro function 맀ν¬λ‘ ν¨μλ μ»΄νμΌ μ μ μ μ²λ¦¬κΈ°μ μν΄ ν μ€νΈλ‘ μΉνμ΄ λλ€. λν `argument`μ νμ μ νμ΄ μλ€λ νΉμ§μ κ°μ§κ³ μλ€. μ΄λ‘μ¨ λ§€ν¬λ‘ ν¨μλ νΈλ¦¬ν¨μ μ 곡νμ§λ§, κ°κ³Όν κ²½μ° μ¬λ°λ₯΄μ§ μμ κ²°κ³Όλ₯Ό λ°ννλ―λ‘ μ£Όμνμ¬ μ¬μ©νμ¬μΌ νλ€. Side effect #include #define TEST(X) ((X) * (X)) int main() { int i = 1; int a = TEST(++i); } κ°λ¨νκ² μκ°νμ λ, ν΄λΉ μ½λλ `TEST(X)`μ `++i`κ°μ λμ νλ€λ©΄ 4λΌλ κ°μ΄ λ°νλ κ²μ΄λΌκ³ μκ°νλ€. νμ§λ§..
μ λ ¬ κΈ°μ€ μ ν μ€λ¦ μ°¨μ μ λ ¬ nums = [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]] sort(nums, key=lambda x: (x[0], x[1])) μ λ ¬νκ³ μ νλ κΈ°μ€μ΄ μ¬λ¬ κ°μΈ κ²½μ° μμ κ°μ΄ μ°μ μ μΌλ‘ μ λ ¬ν κΈ°μ€μ μ ννμ¬ μ λ ¬ν μ μλ€. λ°λλ‘ `x: (x[1], x[0])`κ° λλ€λ©΄ 2λ²μ§Έ κ°μ κΈ°μ€μΌλ‘ μ λ ¬μ νκ² λλ€. λ΄λ¦Ό μ°¨μ μ λ ¬ nums = [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]] sort(nums, key=lambda x: (-x[0], x[1])) μ λ ¬νκ³ μ νλ κΈ°μ€μ νλλ λ΄λ¦Όμ°¨μ, νλλ μ€λ¦ μ°¨μμΌλ‘ μ λ ¬νκ³ μ νλ€λ©΄ μμ κ°μ΄ `-`λ₯Ό λΆμ¬μ£Όλ©΄ λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬ν μ μλ€. μ€λ³΅λλ κ°μ΄ μ..
all, any # μ μ ν μμλ μλμ§λ§, anyμ κ²½μ° iterable μ€ νλλΌλ λ§μ‘±νμ§ μλ κ²½μ° # allμ κ²½μ° iterableμμ λͺ¨λ κ²½μ°κ° λ§μ‘±νλ κ²½μ°λ₯Ό μ°Ύμ μ μλ€. if any(10 > x for x in list): return False else all(10 > x for x in list): return True νλ ¬ λκ°μ μΈλ±μ€ def diagonal(matrix): # β left_right = [matrix[i][j] for i in range(len(matrix))] # β right_left = [matrix[i][len(matrix) - i - 1] for i in range(len(matrix))] νλ ¬ μ ν # μ 체λ list νμμ΄μ§λ§, νλμ νμ μ νν..
permutations from itertools import permutations nums = [num + 1 for num in range(3)] for cases in permutations(nums, 2): print(cases, end=' ') permutations(iterater, reapeat)λ₯Ό ν΅ν΄ μμ΄μ ꡬν μ μλ€. κ²°κ³Ό : (1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2), κ°λ₯ν λͺ¨λ μμλ‘ λ°λ³΅μ νμ§ μμ combinations from itertools import combinations nums = [num + 1 for num in range(3)] for cases in combinations(nums, 2): print(cases, end..
namedtuple from collections import namedtuple person_info = namedtuple("info", "name age address") info = person_info("kim", 12, "111-11") info.name, info.age, info.addressμ κ°μ΄ μ κ·Ό ν μ μλ€. name, age, addressλ₯Ό μΈλ±μ€ 0 ~ 2(ex: info[0])λ‘λ μ κ·Όν μ μλ€. defaultdict λμ λ리λ₯Ό μ¬μ©νλ€ λ³΄λ©΄, μ΄λ€ ν€μ λν κ°μ΄ μλ κ²½μ°μ λν μ²λ¦¬λ₯Ό ν΄μΌνλ κ²½μ°κ° μλ€. λμ λ리μ λν μ΄κΈ°κ°μ μ§μ νκ³ μ ν λ defualtdictμ μ¬μ©ν μ μλ€. def cnt_word(words): cnt = {} for word in ..
heapq μ΄μ§νΈλ¦¬ κΈ°λ°μ μ΅μ ν μλ£κ΅¬μ‘°λ₯Ό μ¬μ©ν μ μλ€. λ§μ½ μλ£κ΅¬μ‘°λ₯Ό μ λ ¬λ μνλ‘ μ μ§ν νμκ° μμ κ²½μ° κ³μν΄μ μ λ ¬μ νλ κ² λ³΄λ€λ, heapifyνλ κ²μ΄ ν¨μ¨μ μ΄λ€. import heapq heap = [] heapq.heappush(heap, 7) heapq.heappush(heap, 1) heapq.heappush(heap, 5) heapq.heappush(heap, 3) heapq.heappop(heap) 리μ€νΈλ₯Ό λ§λ€κ³ 리μ€νΈμ κ°μ μ½μ μμ ν κ²½μ°, heapqμ λ©μλλ₯Ό μ¬μ©νλ©΄ μ΅μν μ±μ§μ κ°μ§λ€. μ΅μνμ κ²½μ°, λͺ¨λ μμ(k)λ μμ μμλ€(2k+1, 2k+2) λ³΄λ€ ν¬κΈ°κ° μλ€. λ°λΌμ ν΄λΉ μμ λ [1, 3, 5, 7]λ‘ μ λ ¬λμ΄ μ΅μνμ΄ μ μ§λκ² λλ€. h..
무μμ νμ©νλ©΄ μ’μκΉ? νλ‘κ·Έλλ° μΈμ΄λ κ° μΈμ΄λ§λ€ μ 곡νλ κΈ°λ₯μ΄ μ‘°κΈμ© μμ΄νλ€. νμ΄μ¬μ κ²½μ° λ€μν built-in functionμ ν΅ν΄ μ½λλ₯Ό κ°κ²°νκ² μμ±νκ³ , λΉ λ₯΄κ² μμ±ν μ μλ μ₯μ μ΄ μλ€. μ΄λ₯Ό μ μμ§νλ€λ©΄, μ½λ© ν μ€νΈμ κ°μ μν©μμ ν¨μ¨μ μΌλ‘ λ¬Έμ μ μ κ·Όν μ μμ κ²μ΄λ€. List λ΄ κ° μμ λ³κ²½ κΈ°λ³Έ μ μΌλ‘ 리μ€νΈλ₯Ό νμ©νκΈ° μν΄μλ 리μ€νΈμ κ°μ μΆκ°, μμ , λ³κ²½μ΄ νμνλ€. (κ° ν¨μλ€μ λ°νκ°μ΄ μ‘΄μ¬νμ§ μλλ€.) 1. append # 리μ€νΈ λ§μ§λ§ μΈλ±μ€ λ€μ κ° μ½μ list.append(item) 2. extend # 리μ€νΈ1μ 리μ€νΈ2μ μμλ€μ κ°μ Έμ΄ list1.extend(list2) 3. insert # μνλ μΈλ±μ€ μμΉμ κ°μ μ½μ list.i..