[1] 파이썬 기초 문법
1. 기본 입출력
1) 자주 사용되는 표준 입력 방법
- input() 함수는 한 줄의 문자열을 입력 받는 함수
- map() 함수는 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용
ex. 공백을 기준으로 구분된 데이터를 입력 받을 때는 다음과 같이 사용
list(map(int, input().split()))
ex. 공백을 기준으로 구분된 데이터의 개수가 많지 않다면, 단순히 다음과 같이 사용한다.
a,b,c = map(int, input().split())
2) 자주 사용되는 표준 출력 방법
- 파이썬에서 기본 출력은 print() 함수를 이용한다.
각 변수를 콤마(,)를 이용하여 띄어쓰기로 구분하여 출력할 수 있음.
- print()는 기본적으로 출력 이후에 줄 바꿈을 수행한다.
줄 바꿈을 원치 않는 경우 'end' 속성을 이용할 수 있다.
2-1. f-string 예제
: 문자열 앞에 접두사 'f'를 붙여 사용한다. 중괄호 안에 변수명을 기입하여 간단히 문자열과 정수를 함께 넣을 수 있다.
answer = 7
print(f"정답은 {answer}입니다.")
#출력 결과
정답은 7입니다.
2. 조건문
: 프로그램의 흐름을 제어하는 문법
1) 논리 연산자
논리 값(True/False)사이의 연산을 수행할 때 사용
- X and Y : X와 Y가 모두 참(True)일 때 참(Treu)이다.
- X or Y : X와 Y중에 하나만 참(True)이어도 참(True)이다.
- not X : X가 거짓(False)일 때 참(True)이다.
2) in 연산자( not in 연산자)
: 리스트, 튜플, 문자열, 딕셔너리 모두에서 사용 가능
- x in 리스트 : 리스트 안에 x가 들어가 있을 때 참(True)이다.
- x not in 문자열 : 문자열 안에 x가 들어가 있지 않을 때 참(True)이다.
3. 반복문
: 반복적으로 실행하고자 할 때 사용하는 문법 (while문, for문)
1) for문
'in' 뒤에 오는 데이터(리스트, 튜플 등)에 포함되어 있는 원소를 첫 번째 인덱스부터 차례대로 하나씩 방문
for 변수 in 리스트:
실행할 소스코드
#1
array = [9,8,7,6,5]
for x in array:
print(x)
#출력 결과
9
8
7
6
5
2) continue 키워드
: 반복문에서 남은 코드의 실행은 건너뛰고, 다음 반복을 진행하고자 할 때 continue를 사용함.
# 1부터 9까지의 홀수의 합을 구할 때 다음과 같이 작성함
result = 0
for i in range(1, 10):
if i $2 == 0:
continue
result += i
print(result)
#출력 결과
25
3) break 키워드
: 반복문을 즉시 탈출하고자 할 때 break를 사용함.
#1 학생들의 합격 여부 판단 예제
#1) 점수가 80점만 넘으면 합격
scores = [90,85,77,65,97]
for i in range(5):
if scores[i] >= 80:
pinrt(i + 1, "번 학생은 합격입니다.")
#출력 결과
1 번 학생은 합격입니다.
2 번 학생은 합격입니다.
5 번 학생은 합격입니다.
#2) 특정 번호의 학생은 제외하기
scores = [90,85,77,65,97]
cheating_sudent_list = {2,4}
for i in range(5):
if i + 1 in cheating_student_list:
continue
if scores[i] >= 80:
print(i + 1, "번 학생은 합격입니다.")
#출력 결과
1 번 학생은 합격입니다.
5 번 학생은 합격입니다.
4. 함수
1) 함수 정의하기
- 매개변수 : 함수 내부에서 사용할 변수
- 반환 값 : 함수에서 처리 된 결과를 반환
def 함수명(매개변수):
실행할 소스코드
return 반환 값
2) 여러 개의 반환 값(패킹, 언패킹)
def operator(a,b):
add_var = a+b
subtract_var = a-b
multiply_val = a*b
divide_var = a/b
return add_var, subtract_var, multiply_var, divide_var
a,b,c,d = operator(7,3)
print(a,b,c,d)
5. 람다 표현
: 함수를 간단하게 작성(특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있다는 점이 특징)
#함수 | 일반적인 add() 메서드 사용
def add(a,b):
return a + b
print(add(3,7))
#출력 결과
10
#람다 표현식으로 구현한 add() 메서드
print((lambda a, b: a + b)(3,7))
#출력 결과
10
#1 람다 표현식 예시 : 내장 함수에서 자주 사용되는 람다 함수
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])) # x[1]은 두번째 수 value기준으로 오름차순 정렬
#출력 결과
[('이순신', 32), ('홍길동', 50), ('아무개', 74)]
[('이순신', 32), ('홍길동', 50), ('아무개', 74)]
#2 람다 표현식 예시 : 여러 개의 리스트에 적용
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,8,11,13,15]
6. 파이썬 유용한 라이브러리
1) itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능을 제공한다.(순열과 조합)
2) heapq : 힙(Heap) 자료구조를 제공함(우선순위 큐 기능을 구현하기 위해 사용)
3) bisect : 이진 탐색(Binary Search) 기능 제공
4) collections : 덱(deque), 카운터(Counter) 등의 유용한 자료구조 포함
5) math : 필수적인 수학적 기능(팩토리얼, 제곱근, 최대공약수, 삼각함수 관련 함수부터 파이와 같은 상수 포함)
# sorted()
result = sorted([9,1,6,5,4])
reverse_result = sorted([9,1,8,5,4], reverse = True)
print(result)
print(reverse_result)
#출력결과
[1,4,5,8,9]
[9,8,5,4,1]
# sorted() with key
array = [('홍길동', 35), ('이순신', 75), ('아무개', 50)]
result = sorted(array, key=lambda x : x[1], reverse=True)
print(result)
#출력결과
[('이순신', 75), ('아무개', 50), ('홍길동', 35)]
6-1. 순열
: 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것
{'A', 'B', 'C'}에서 두 개를 선택하여 나열하는 경우 : 'ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA'
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')]
6-2. 조합
: 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택하는 것
{'A', 'B', 'C'}에서 순서를 고려하지 않고 두 개를 뽑는 경우 'AB', 'AC', 'BC'
from itertools import combinations
data = ['A', 'B', 'C'] #데이터 준비
result = list(combinations(data, 2)) #2개를 뽑는 모든 조합 구하기
print(result)
#출력결과
[('A', 'B'), ('A', 'C'), ('B', 'C')]
6-3. 중복순열과 중복조합
#1. 중복순열
from itertools import product
data = ['A', 'B','C'] # 데이터 준비
result = list(product(data, repeat=2)) #2개를 뽑는 모든 순열 구하기 (중복 허용)
print(result)
#2 중복조합
from itertools import combination_with_replacement
data = ['A', 'B', 'C'] #데이터 준비
result = list(combinations_with_replacement(data, 2)) #2개를 뽑는 모든 조합 구하기(중복 허용)
print(result)
6-4. Counter
파이썬 collections 라이브러리의 Counter는 등장 횟수를 세는 기능을 제공한다.
리스트와 같은 반복 가능한(iterable) 객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지를 알려줌
form collections import Counter
conter = 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}
6-5. 최대 공약수와 최소 공배수
math 라이브러리의 gcd() 함수를 이용한다.
import math
# 최소 공배수(LCM)를 구하는 함수
def lcm(a, b):
return a*b // math.gcd(a,b)
a = 21
b = 14
print(math.gcd(21,14)) # 최대 공약수(GCD) 계산
print(lcm(21,4) # 최소 공배수(LCM) 계산
#출력 결과
7
42
'Study with Yedol > 코딩테스트 준비' 카테고리의 다른 글
이코테 강의 몰아보기 | 4. 정렬 알고리즘 (0) | 2024.04.25 |
---|---|
이코테 강의 몰아보기 | 3. DFS & BFS (2) | 2024.04.25 |
이코테 강의 몰아보기 | 2-2. 그리디 & 구현 (1) | 2024.04.23 |
이코테 강의 몰아보기 | 2-1. 그리디 & 구현 (0) | 2024.04.23 |
이코테 강의 몰아보기 | 1-1 파이썬 기초 문법 (0) | 2024.04.22 |