1. 기본입출력
1) 입력
input()
: 한줄의 문자열을 입력받는 함수
map()
: 리스트의 모든 원소에 각각 특정한 함수를 적용
- 🎇
list(map(int, input().split()))
🎇 : 공백을 기준으로 구분된 데이터를 입력받을 때 / 구분된 데이터를 모두 정수형으로 바꾸고 리스트로 만듦
a,b,c = map(int, input().split())
: 공백을 기준으로 구분된 데이터의 개수가 많지 않을때
sys.stdin.readline()
: 사용자로부터 입력을 최대한 빠르게 받아야 하는 경우 (입력 후 엔터가 줄바꿈 기호로 입력되므로 rstrip()
을 함께 사용)
2) 출력
print()
: 기본 출력. 줄바꿈을 원치 않는 경우 end
속성 이용
ex) print("Hello World", end=" ")
f-string
: 문자열 앞에 f
를 붙이고 중괄호 안에 변수명 기입
ex) print(f"정답은 {answer}입니다.")
2. 조건문
if 조건문1:
조건문1이 True일 때 실행되는 코드
elif 조건문2:
조건문1에 해당하지 않고, 조건문2가 True일때 실행되는 코드
else:
위의 모든 조건문이 모두 True가 아닐때 실행되는 코드
- elif나 else는 경우에 따라 생략해도 됨
- 비교연산자 :
==
, !=
- 논리연산자 :
and
, or
, not
in
, not in
: 리스트, 튜플, 문자열, 딕셔너리 모두에서 사용 가능
pass
: 아무것도 처리하고 싶지 않을 때
- 조건부 표현식 :
"Success" if score >= 80 else "Fail"
- 파이썬에서는 수학의 부등식을 그대로 사용할 수 있다.
ex) x>0 and x<20
== 0<x<20
3. 반복문
- while보다 for이 간결한 경우가 많다.
- 코딩테스트에서 무한루프를 구현할 일은 거의 없으니 유의
- for문에서 연속적인 값을 차례대로 순회할 때는
range()
를 주로 사용
ex) range(시작값, 끝값+1)
/ 인자를 하나만 넣으면 0부터 시작
continue
: 반복문에서 남은 코드의 실행을 건너뛰고 다음 반복을 진행할때 사용
4. 함수와 람다표현식
1) 함수
- 파라미터의 변수를 직접 지정할 수 있음 (순서 상관X)
ex) add(b=3, a=7)
- 🌏
global
🌏 : global 키워드로 변수를 지정하면 해당 함수에서는 지역 변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조한다.
a = 10
def func():
global a
a += 1
print(a)
func()
"""
실행결과
11
"""
- 값의 변화 없이 단순 참조는
global
쓰지 않아도 오류 없음
- 전역변수(ex.
list
)의 내부메소드(ex. append
) 호출도 오류 없이 수행 가능
- 똑같은 이름의 지역변수와 전역변수가 있으면 지역변수 우선 참조
- 파이썬에서는 여러개의 반환값을 가질 수 있음
2) 람다표현식
- 람다표현식을 사용하면 함수를 간단하게 작성할 수 있다.
def add(a,b):
return a+b
print(add(3,7))
print((lambda a, b: a+b)(3, 7))
"""
실행결과
10
10
"""
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)]
"""
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]
"""
5. 자주 사용되는 표준 라이브러리
1) 내장함수
- 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공
- 파이썬 프로그램을 작성할 때 없어서는 안되는 필수적인 기능 포함
- ex)
sum()
, min()
, max()
, eval()
, sorted()
- 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공
- 특히 순열과 조합 라이브러리가 자주 사용됨
- 순열 : 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것
- ex) {'A', 'B', 'C'}에서 3개를 선택하여 나열하는 경우 : ABC, ACB, BAC, BCA, CAB, CBA
- 순열의 수 = nPr = n(n-1)(n-2)...(n-r+1)
- 조합 : 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택하는 것
- ex) {'A', 'B', 'C'}에서 순서를 고려하지 않고 2개를 뽑는 경우 : AB, AC, BC
- 조합의 수 = nCr = n(n-1)(n-2)...(n-r+1) / r!
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))
print(result)
"""
실행결과
[('A', 'B'), ('A', 'C'), ('B', 'C')]
"""
from itertools import product
data = ['A', 'B', 'C']
result = list(product(data, repeat=2))
print(result)
"""
실행결과
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'),
('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
"""
from itertools import combinations_with_replacement
data = ['A', 'B', 'C']
result = list(combinations_with_replacement(data, 2))
print(result)
"""
실행결과
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
"""
3) heapq
- 힙(Heap) 자료구조 제공
- 일반적으로 우선순위 큐 기능을 구현하기 위해 사용됨
4) bisect
- 이진 탐색(Binary Search) 기능을 제공
5) collections
- 덱(deque), 카운터(Counter) 등의 자료구조 포함
- Counter는 리스트와 같이 반복 가능한 객체가 주어졌을 때 내부의 원소가 몇번씩 등장했는지를 알려줌
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['blue'])
print(counter['green'])
print(dict(counter))
"""
실행결과
3
1
{'red': 2, 'blue': 3, 'green': 1}
"""
6) math
- 필수적인 수학적 기능 제공
- 팩토리얼, 제곱근, 최대공약수, 삼각함수 관련 함수부터 파이(pi)와 같은 상수 포함
import math
def lcm(a,b):
return a*b // math.gcd(a, b)
a = 21
b = 14
print(math.gcd(21, 14))
print(lcm(21, 14))
"""
실행결과
7
42
"""