[이것이 코딩 테스트다] 1-2. 코딩 테스트 출제 경향 분석 및 파이썬 부수기

Ji·2021년 5월 12일
0

헷갈리는 개념만 기본 정리.

파이썬의 pass 키워드

  • 아무것도 처리하고 싶지 않을 때 pass 키워드를 사용
score = 85

if score >= 80:
    pass # 나중에 작성할 소스코드
else:
    print('성적이 80점 미만입니다')

print('프로그램을 종료합니다')

###
프로그램을 종료합니다

파이썬 조건문 내에서의 부등식

  • 파이썬은 다른 프로그래밍 언어와 달리 수학의 부등식을 그대로 사용 가능. (ex) x > 0 and x < 20 과 0 < x < 20은 같은 결과를 반환

람다 표현식

  • 함수를 간단하게 작성할 수 있음 ->특정 기능 수행 함수를 한 줄에 작성함.
    예시 1)
def add(a, b):
    return a + b

# 일반적인 add() 메서드 사용
print(add(3, 7))

# 람다 표현식으로 구현한 add() 메서드
print((lambda a, b: a + b)(3, 7))

예시 2) - 내장함수에서 자주 사용되는 람다함수

array = [('홍길동', 50), ('이순신', 32), ('아무개', 74)]

def my_key(x):
    return x[1]

print(sorted(array, key=my_key))
print(sorted(array, key=lambda x: x[1]))

##
[('이순신', 32), ('홍길동', 50), ('아무개', 74)]
[('이순신', 32), ('홍길동', 50), ('아무개', 74)]

예시 3) - 여러 리스트에서의 적용

list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8, 9, 10]

result = map(lambda a, b: a + b, list1, list2)

print(list(result))
# [7, 9, 11, 13, 15]

실전서 유용한 표준라이브러리

  • 내장 함수: 기본 입출력 함수 부터 정렬 함수까지 기본적인 함수들을 제공
  • itertools: 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공. 특히 순열의 조합 라이브러리는 코딩 테스트에서 자주 사용됨
  • heapq: 힙(Heap) 자료구조를 제공. 주로 우선순위 큐 기능을 구현하기 위해 사용한다고 함.
  • bisect: 이진 탐색(Binary Search) 기능을 제공
  • collections: 덱(deque), 카운터(Counter) 등의 유용한 자료구조를 포함
  • math: 필수적인 수학적 기능을 제공함 ->팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수부터 파이(pi)와 같은 상수까지 포함.

순열과 조합

  • 순열 : 서로 다른 𝑛개에서 서로 다른 𝑟개를 선택하여 일렬로 나열
from itertools import permutations

data = ['A', 'B', 'C'] # 데이터 준비

result = list(permutations(data, 3)) # 모든 순열 구하기
print(result)
##
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
  • 조합: 서로 다른 𝑛개에서 순서에 상관 없이 서로 다른 𝑟개를 선택
from itertools import combinations

data = ['A', 'B', 'C'] # 데이터 준비

result = list(combinations(data, 2)) # 2개를 뽑는 모든 조합 구하기
print(result)
##
[('A', 'B'), ('A', 'C'), ('B', 'C')]

중복 순열과 중복 조합

# 중복 순열
from itertools import product

data = ['A', 'B', 'C'] # 데이터 준비

result = list(product(data, repeat=2)) # 2개를 뽑는 모든 순열 구하기 (중복 허용)
print('> 2개를 뽑는 모든 순열 구하기 (중복 허용)')
print(result)

# 중복 조합
from itertools import combinations_with_replacement

data = ['A', 'B', 'C'] # 데이터 준비

result = list(combinations_with_replacement(data, 2)) # 2개를 뽑는 모든 조합 구하기 (중복 허용)
print('> 2개를 뽑는 모든 조합 구하기 (중복 허용)')
print(result)
> 2개를 뽑는 모든 순열 구하기 (중복 허용)
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
> 2개를 뽑는 모든 조합 구하기 (중복 허용)
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]

Counter

  • 파이썬 collections 라이브러리에 존재. 등장 횟수를 세는 기능
  • 리스트와 같은 반복 가능한(iterable) 객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지 알려줌.
from collections import Counter

counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])

print(counter['blue']) # 'blue'가 등장한 횟수 출력
print(counter['green']) # 'green'이 등장한 횟수 출력
print(dict(counter)) # 사전 자료형으로 반환
##
3
1
{'red': 2, 'blue': 3, 'green': 1}

최대 공약수

  • 최대공약수 -> math 라이브러리의 gcd()함수 이용
import math
a = 21
b = 14

print(math.gcd(21, 14)) # 최대 공약수(GCD) 계산
#
7
profile
공부방

0개의 댓글