1. 코딩 테스트 출제 경향 분석 및 파이썬 문법

hiworld·2022년 6월 13일
0
post-thumbnail

📌 리스트 자료형

1. 리스트 컴프리헨션

list1 = [i for i in range(20) if i % 2 == 1]
print(list1) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

list2 = [i * i for i in range(10)]
print(list2) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

N x M 2차원 리스트 초기화

n = 4
m = 2

array = [[0] * m for _ in range(n)]
print(array)

2. 리스트 관련 메서드

append(), sort(), reverse(), insert(), count(), remove() ...


📌 사전, 집합 자료형

1. 집합 자료형의 연산

a = set([1, 2, 3, 4, 5])
b = {3, 4, 5, 6, 7}

print(a | b) # 합집합

print(a & b) # 교집합

print(a - b) # 차집합

2. 집합 자료형 관련 함수

data = set([1, 2, 3])
# data = {1, 2, 3} # 또 다른 초기화 방식

data.add(4)
print(data) # {1, 2, 3, 4}

# 새로운 원소 여러 개 추가
data.update([5, 6])
print(data) # {1, 2, 3, 4, 5, 6}

data.remove(3)
print(data) # {1, 2, 4, 5, 6}

📌 기본 입출력

1. 빠르게 입력 받기

사용자로부터 입력을 빠르게 받아야 하는 경우, sys 라이브러리의 sys.stdin.readline() 메서드를 이용할 수 있다. 단, 입력 후 엔터도 줄 바꿈 기호로 입력되므로 rstrip() 메서드도 함께 사용해야 한다.

import sys

data = sys.stdin.readline().rstrip()
print(data)

📌 함수와 람다 표현식

1. 파라미터 지정하기

파라미터의 변수를 직접 지정 가능하다.

def add(a, b):
	result = a + b
	print('더한 결과: ', result)
    
add(b = 7, a = 3)

2. 여러 개의 반환 값

함수는 여러 개의 반환 값을 가질 수 있으며, 이때 return type은 tuple 이다.

def operator(a, b):
  add = a + b
  subtract = a - b
  multiply = a * b
  divide = a / b
  return add, subtract, multiply, divide # 'packing'

a, b, c, d = operator(6, 3) # 'unpacking'
print(a, b, c, d) # 9 3 18 2.0
print(type(operator(6, 3))) #<class 'tuple'>

3. 람다 표현식

함수를 간단하게 작성할 수 있다.

예시 1 : 기본

def mul(a, b):
  return a * b

print(mul(5, 4)) # 20

print((lambda x, y: x * y)(5, 4)) # 20
print(list(map(lambda x, y: x * y, [1, 2, 3], [4, 5, 6]))) # [4, 10, 18]

예시 2 : 람다 함수 이용하여 정렬

scores = [('A', 75), ('B', 100), ('C', 80)]

def my_key(x):
  return x[1]

# key에 정렬 기준 명시
print(sorted(scores, key = my_key)) # [('A', 75), ('C', 80), ('B', 100)]
print(sorted(scores, key = lambda x: x[1])) # 위와 동일

예시 3 : 여러 개의 리스트에 적용

list1 = [1, 2, 3]
list2 = [4, 5, 6]

result = map(lambda x, y: x * y, list1, list2)

print(list(result)) # [4, 10, 18]

📌 자주 사용되는 표준 라이브러리

0. 내장 함수

  • sum(), min(), max(), eval(), sorted() ...

1. itertools

  • 반복되는 형태의 데이터를 처리하기 위한 유용한 기능 제공
  • 순열(permutation), 조합(combination) 라이브러리 -> 완전 탐색에 많이 사용됨

순열(permutations)

from itertools import permutations

data = ['A', 'B', 'C']

result = list(permutations(data, 3)) # 3개를 뽑아 나열
print(result) # [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]

조합(combinations)

from itertools import combinations

data = ['A', 'B', 'C']

result = list(combinations(data, 2)) # 순서 상관없이 2개 뽑기
print(result) # [('A', 'B'), ('A', 'C'), ('B', 'C')]

중복 순열(product)

from itertools import product

data = ['A', 'B', 'C']

result = list(product(data, repeat = 2)) # 중복을 허용하여 2개를 뽑아 나열
print(result) # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]

중복 조합(combinations_with_replacement)

from itertools import combinations_with_replacement

data = ['A', 'B', 'C']

result = list(combinations_with_replacement(data, 2)) # 중복을 허용하여 순서 상관없이 2개 뽑기
print(result) # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]

2. heapq

  • 힙 자료구조 제공
  • 우선순위 큐 구현
  • 최단 경로 알고리즘 e.g., 다익스트라

3. bisect

  • 이진 탐색(Binary Search) 기능 제공

4. collections

  • 덱(deque), 카운터(Counter) 등의 유용한 자료구조 포함

카운터(Counter)

from collections import Counter

mycounter = Counter(['yellow', 'yellow', 'green', 'green', 'yellow', 'blue'])

print(mycounter['yellow'])
print(mycounter['green'])
print(dict(mycounter))

5. math

  • 수학적 기능

최대공약수(GCD)

import math

# 최소공배수(LCM)는 따로 함수 만들어줘야 함
def lcm(a, b):
  return a * b // math.gcd(a, b)

print(math.gcd(21, 14)) # 최대공약수(GCD) # 7
print(lcm(21, 14)) # 42

[참고]

profile
바쁘게 살아 보자!

0개의 댓글