출처
동빈나 이코테
참고하면 좋은 포스트
파이썬 코딩테스트 요구사항 분석
# 공백을 기준으로 입력 받음
data = list(map(int, input().split()))
print(data)
# 65 90 75 34 99 입력
# [65, 90, 75, 34, 99]
# 공백을 기준으로 구분된 데이터가 많지 않을 때
a, b, c, d, e = map(int, input().split())
print(a, b, c, d, e)
# 65 90 75 34 99 입력
# 65 90 75 34 99
한 줄의 문자열의 입력 받는 함수
n = int(input())
print(n)
# 5입력
# 5
data = input()
print(data)
# 65 90 75 34 99 입력
# 65 90 75 34 99
문자열을 공백 기준으로 나눠 리스트로 반환
data = input().split()
print(data)
# 65 90 75 34 99 입력
# ['65', '90', '75', '34', '99']
리스트의 각각의 원소에 특정한 함수를 적용할 때
data = input().split()
# ['65', '90', '75', '34', '99']
int()
적용data = list(map(int, input().split()))
print(data)
# 65 90 75 34 99 입력
# [65, 90, 75, 34, 99]
Python의 sys 라이브러리에 정의된 메서드
import sys
data = sys.stdin.readline().rstrip()
print(data)
a = 1
b = 2
print(a, b)
# 1 2
# 'end'속성으로 줄 바꿈을 공백으로 대체
print(a, end=" ")
print(b, end=" ")
# 1 2
answer = 7
print(f"정답은 {answer}입니다.")
# 정답은 7입니다.
if ~ elif ~ else
a = -5
if a == 0:
print("a == 0")
elif a > 0:
print("a > 0")
else:
print("a < 0")
# a < 0
논리 값 (True/False) 사이의 연산 수행
논리 연산자 | 설명 |
---|---|
X and Y | X와 Y가 모두 참일 때 참 |
X or Y | X와 Y 중 하나만 참이면 참 |
not X | X가 거짓일 때 참 |
in 연산자
와 not in 연산자
연산자 | 설명 |
---|---|
x in A | A 안에 x가 들어있을 때 참 |
x not in A | A 안에 x가 안 들어있을 때 참 |
아무것도 처리하고 싶지 않을 때 사용
score = 85
if score >= 80:
pass
else:
pass
print("프로그램 종료")
조건문에서 실행될 소스코드가 한 줄인 경우는 한 줄로 표현 가능
score = 85
if score >= 80: result = "Success"
else: result = "Fail"
# Success
if ~ else문 한 줄에 작성 가능
score = 85
result = "Success" if score >= 80 else "Fail"
print(result)
# Success
아래 두 방법 모두 사용 가능하며 동일한 결과
x = 15
# 다른 언어와 같은 방식
if x > 0 and x < 20:
# 파이썬에서만 가능한 방식
if 0 < x < 20:
while과 for가 존재하며 어느것을 사용해도 무관
반복문에서 남은 코드의 실행을 건너뛰고 다음 반복 진행을 원할 때
result = 0
for i in range(1, 10):
if i % 2 == 0:
continue:
result += i
print(result)
# 25
반복문 탈출
특정한 작업을 하나의 단위로 묶어 중복 제거
def 함수명(매개변수):
실행할 소스코드
return 반환값
print("hello")
# hello가 인자
def add(a, b):
print(a+b)
add(a = 3, b = 7)
add(b = 7, a = 3)
a = 0
def func():
a += 1
print(a)
# 1
a = 0
def func():
global a # global 변수 지정 필요
a += 1
print(a)
# 1
array = [1, 2, 3, 4]
def func():
array.append(5)
print(array)
func()
# [1, 2, 3, 4, 5]
array = [1, 2, 3, 4]
def func():
array = [1, 3]
array.append(5)
print(array)
func()
# [1, 3, 5]
def operator(a, b):
add = a + b
subtract = a - b
multiply = a * b
divide = a / b
return add subtract multiply divide
a, b, c, d = operator(6, 3)
print(a, b, c, d)
# 9, 3, 18, 2
# 일반 함수
def add(a, b):
return a + b
print(add(3, 7))
# lambda 표현식
print((lambda a, b: a + b)(3, 7))
(lambda `매개변수`: `소스코드(반환값)`)(`인자`)
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]
array = [('Apple', 5), ('Banana', 10), ('Kiwi', 3)]
def number(x):
return x[1]
print(sorted(array, key=number))
# [('Kiwi', 3), ('Apple', 5), ('Banana', 10)]
print(sorted(array, key=lambda x: x[1]))
# [('Kiwi', 3), ('Apple', 5), ('Banana', 10)]
라이브러리 | 설명 |
---|---|
내장 함수 | 기본 입출력 함수부터 정렬 함수까지 필수적인 기본적인 함수들 |
itertools | 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들 (순열, 조합 등이 자주 사용됨) |
heapq | 힙 자료구조 제공 (일반적으로 우선순위 큐 기능을 구현하기 위해 사용) |
bisect | 이진 탐색(Binary Search)기능 제공 |
collections | 덱(deque), 카운터(Counter)등의 자료구조 포함 |
math | 수학적 기능 제공 (팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수, 파이(pi) 등) |
result = sum([1, 2, 3, 4, 5])
print(result)
# 15
min_result = min([7, 3, 5, 2])
max_result = max([7, 3, 5, 2])
print(min_result, max_result)
# 2 7
입력한 수식을 계산한 결과를 반환해주는 함수
result = eval("(3+5)*7")
print(result)
56
리스트와 같은 반복가능한 객체를 정렬하는 함수
result = sorted([9, 1, 8, 5, 4])
reverse = sorted([9, 1, 8, 5, 4], reverse=True)
print(result)
print(reverse)
# [1, 4, 5, 8, 9]
# [9, 8, 5, 4, 1]
array = [('Apple', 5), ('Banana', 10), ('Kiwi', 3)]
result = sorted(array, key=lambda x: x[1], reverse=True)
print(result)
# [('Banana', 10), ('Apple', 5), ('Kiwi', 3)]
모든 경우의 수를 고려해야 할 때 사용하는 라이브러리
서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열
from itertools import permutations
data = ['A', 'B', 'C']
result = list(permutations(data, 2))
print(result)
# [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
서로 다른 n개에서 순서에 상관 없이 서로 다른 r개를 선택하는 것
from itertools import combinations
data = ['A', 'B', 'C']
result = list(combinations(data, 2))
print(result)
# [('A', 'B'), ('A', 'C'), ('B', 'C')]
n개에서 r개를 선택하여 일렬로 나열 (중복 허용)
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')]
n개에서 순서에 상관 없이 r개를 선택하는 것 (중복 허용)
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')]
원소의 등장 횟수를 세는 함수
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['blue'])
# 3
리스트와 같은 반복 가능한(iterable) 객체가 주어졌을 때 내부 원소가 각각 몇 번 등장했는지 세어준다
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(dict(counter))
# {'red': 2, 'blue': 3, 'green': 1}
최대 공약수
import math
def lcm(a, b):
return a * b // math.gcd(a, b)
a = 21
b = 14
print(math.gcd(21, 14))
# 7
print(lcm(21, 14))
# 42