* 강의 채널 : 동빈나
* 강의 이름 : (이코테 2021 강의 몰아보기) 1. 코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기
* 강의 링크 : https://youtu.be/m-9pAwq1o3w
총 2시간 21분 42초
1강: 코딩 테스트 개요 및 출제 경향 00:00:00
2강: 알고리즘 성능 평가 00:16:24
3강: 파이썬 문법 - 수 자료형 00:31:22
4강: 파이썬 문법 - 리스트 자료형 00:43:49
5강: 파이썬 문법 - 문자열, 튜플 자료형 01:03:48
6강: 파이썬 문법 - 사전, 집합 자료형 01:11:11
7강: 파이썬 문법 - 기본 입출력 01:19:30
8강: 파이썬 문법 - 조건문 01:29:10
9강: 파이썬 문법 - 반복문 01:48:18
10강: 파이썬 문법 - 함수와 람다 표현식 01:58:23
11강: 파이썬 문법 - 자주 사용되는 표준 라이브러리 02:13:14
🚲 1. 코딩테스트 개요 및 출제 경향
* 온라인 개발환경(python)
: 리플릿, 온라인 개발환경,
* 오프라인 개발환경(python)
: 파이참(오프라인)
*자신만의 소스코드 관리하기
자신이 자주사용하는 알고리즘 코드를 라이브러리화 하기
🚲 2. 알고리즘 성능 평가
* 복잡도(Complexity)
: 알고리즘의 성능을 나타내는 척도.
: 시간복잡도(특정한 크기 입력에 대하여 알고리즘의 수행시간 분석)
: 공간 복잡도(특저한 크기 입력에 대하여 알고리즘의 메모리 사용량 분석)
-> 일반적으로 복잡도가 낮을수록 좋은 알고리즘입니다-! 👩🦰
* 알고리즘 문제 해결 과정
1. 지문 읽기 및 컴퓨터적 사고
2. 요구사항(복잡도) 분석
3. 문제 해결을 위한 아이디어 찾기
4. 소스코드 설계 및 코딩
-> 핵심 아이디어를 캐치한다면, 간결하게 소스코드를 작성할 수 있는 형태로 접근!
🚲 3. 수 자료형
* 자료형
: 모든 프로그래밍은 결국 데이터를 다루는 행위
- 정수형(int): 양의 정수,음의 정수,0
- 실수형(Real Number): 소수점 아래의 데이터를 포함하는 수 자료형
- 지수 표현방식: 10의 9제곱은 1e9
* 연산
- 나누기 연산자 /
- 나머지 연산자 %
- 몫 연산자 //
- 거듭제곱 연산자 **
🚲4. 리스트 자료형
: 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형입니다.
대괄호 [ ] 안에 원소를 넣어 초기화
쉼표 , 로 각 값 구분
비어있는 리스트는 list( ) 나 [ ] 로 표현
인덱스는 0부터 시작
*리스트 인덱싱
양의 정수는 왼->오른 리스트 정방향탐색
음의 정수는 오른->왼 리스트 역방향탐색
*리스트 슬라이싱
리스트에서 연속적인 위치를 갖는 원소들을 가져와야할 떄 이용
[시작점 : 끝점] <- 이렇게 표현
*리스트 컴프리핸션
리스트를 초기화하는 방법
조건문+반복문 리스트를 초기화함
ex1 ) [i for i in range(5)] ->> [0,1,2,3,4]
ex2 )
<리스트 컴프리핸션>
array =[i for i in range(20) if i%2==1]
<일반적인 코드>
array=[ ]
for i in range(20):
if i%2==1:
array.append(i)
2차원 리스트를 초기화할 때 효과적으로 사용가능!
특히 m(행)*n(열)크기의 2차원리스트를 한번에 초기화 해야할 때 매우 유용
ex) array=[ [0]*m for _ in range(n)]
* 언더바 _
: 변수의 값을 무시하고자 할 떄 사용함
🚲5. 문자열, 튜플 자료형
: 문자열 변수를 초기화 할때 큰 따옴표 " " 또는 작은 따옴표 ' ' 를 이용
: 큰따옴표나 작은따옴표를 나타내고 싶으면 바로앞에 \ 또는 \ 를 쓴다
ex) print("\" python\"") ->> "python"
*문자열 연산
덧셈 + 을 사용하면 문자열을 더해져서 연결됨
곱셈 * 을 사용하면 문자열이 반복가능함
인덱싱과 슬라이싱 사용가능
*튜플 자료형
튜플은 한 번 선언된 값을 변경할 수 없음
소괄호 ( ) 사용
상대적으로 적은 공간 사용
-----> 튜플을 사용하면 좋은 경우
1) 서로다른 성질을 데이터를 묶을 떄
2) 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 떄
3) 리스트보다 메모리 효율적
🚲6. 사전, 집합 자료형
*사전 자료형
키(key)와 값(value)의 쌍을 데이터로 가지는 자료형
순차적으로 저장 되지 않음
변경불가능한 자료형을 키로 사용
해시(Hash)테이블을 이용하므로 효율적
*사전자료형 method
- 키 데이터만 뽑아서 리스트로 이용: keys( )
- 값 데이터만 뽑아서 리스트로 이용: values( )
*집합자료형
중복을 허용하지 않고 순서 없음
리스트 혹은 문자열을 이용하여 초기화가능
set( )함수 이용 또는 중괄호 { } 안에 각 원소 삽입
데이터의 조회 및 수정에 있어서 시간효율적
*집합자료형의 연산
*집합자료형 관련 함수
*사전자료형과 집합자료형의 특징
순서가 없기 때문에 인덱싱으로 값을 얻을 수 없음
사전의 키(key) 혹은 집합의 원소를 이용하여 시간복잡도 조회
🚲7. 기본 입출력
* python 입력
한줄의 문자열을 입력받는 함수 input ( )
모든 원소에 각각 특정한 함수를 적용할 때 사용하는 함수 map ( )
ex) a=map(int,input().split()) ->> a= 1 2 3 4 이런식으로 입력가능
---> 빠르게 입력받기 : sys 라이브러리의 sys.stdin.readline( ) 함수 사용!
단, 입력 후 엔터가 줄 바꿈기호로 입력되므로 rstrip( ) 함수와 함께 사용
[위와 관련하여 참고자료] 👉https://yang-wistory1009.tistory.com/54
* python 출력
기본 출력 print( )
각 변수를 쉼표 , 이용하여 띄어쓰기 구분 출력 가능
기본적으로 출력 이후에 줄바꿈을 수행함(원치 않으면 end 속성 이용 ,end=' ' )
*f-string
파이썬 3.6ver 이상사용
문자열 앞에 f를 붙여서 사용
ex) answer=7
print( f"정답은 {answer}입니다.")
print("정답은 { }입니다.".format(answer))와 동일
🚲8. 조건문
: 조건문은 프로그램의 흐름을 제어하는 문법
조건에 따라서 프로그램의 로직 설정 가능
코드의 블록을 들여쓰기(4개 공백 / tab) 함
if ~ elif ~ else
*조건문 실행코드 한줄이면 바로 옆에 써도 됨
*if ~ else문을 한 줄에 작성할 수 있음
대신 (if 실행 값) if 조건 else (else 실행 값)
🚲9. 반복문
*while문
-무한루프 주의(탈출가능한지)
*for문
for 변수 in 리스트 또는 range( ):
실행할 소스코드:
*반복문 키워드
- continue: 남은 코드의 실행을 건너뛰고 다음 반복을 진행할 떄
- break: 반복문을 즉시 탈출 할때
🚲10. 함수와 람다 표현식
*함수
특정한 작업을 하나의 단위로 묶어 놓은 것을 함수라고 함
불필요한 소스코드 반복을 줄일 수 있음
- 내장함수: 파이썬이 기본적으로 제공하는 함수 ex) input( ), print( )
- 사용자 정의 함수: 개발자가 직접 작성하는 함수
def 함수명(매개변수):
실행할 소스코드
return 반환 값
-global 키워드 : 해당 함수에서는 지역변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조하게 됩니다.
* 람다 표현식
함수를 간단하게 작성 가능함
특정한 기능을 수행하는 함수를 한줄에 작성할 수 있음
# 람다 표현식 - 예제 만들기
#1 예제
array=[('a',4),('b',2),('c',3)]
def sona(x):
return x[1]
print(sorted(array, key=sona))
print(sorted(array, key=lambda x: x[1]))
#답
#[('b', 2), ('c', 3), ('a', 4)]
#[('b', 2), ('c', 3), ('a', 4)]
#2 예제
a=[1,2,3,4,5]
b=[6,7,8,9,10]
# map(lambda 변수들: 원하는 값, 변수들 지정)
result=map(lambda x,y: x+y, a, b)
print(list(result))
#답: [7, 9, 11, 13, 15]
🚲11. 자주 사용되는 표준 라이브러리
* 내장함수: 기본 입출력 함수부터 정렬함수까지 기본적인 함수들을 제공합니다. 필수기능
* itertools: 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공합니다.
- 특히 순열과 조합 라이브러리는 자주 사용
* heapq: 힙 자료 구조를 제공합니다. 일반적으로 우선순위 큐 기능을 구현
* bisect: 이진탐색(binary search) 기능을 제공
* collections: 덱(deque), 카운터(counter)등 유용한 자료구조를 포함
* math: 필수적인 수학적 기능을 제공
- 팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수부터 파이와 같은 상수를 포함
* 내장함수
sum( ) 합계, max( )최대값, min( )최소 값,
eval( ) : 계산한 문자열을 실제 수로 변환
result=eval('(3+5)*7')
print(result)
#답 : 56
sorted( ): 정렬 (기본적으로 오름차순 / 내림차순의 경우에는 reverse=True를 작성)
result=sorted([5,4,3,2,1])
print(result)
reverse_result=sorted([1,2,3,4,5],reverse=True)
print(reverse_result)
#답
#[1, 2, 3, 4, 5]
#[5, 4, 3, 2, 1]
sorted( ) with key: key 속성으로도 정렬 가능(lambda 이용하여서)
array=[('장안구',1),('수원시',2),('경기도',3)]
result=sorted(array, key=lambda x: x[1], reverse=True)
print(result)
#답: [('경기도', 3), ('수원시', 2), ('장안구', 1)]
*itertools (순열과 조합)
# 순열 nPr
#n개 중에 r개 순서 고려하여 뽑기
#data 중에 3개를 순서 고려하여 뽑기
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')]
# 조합 nCr
# n개중에 r개 순서 고려하지 않고 뽑기
#data 중에 2개 뽑기
from itertools import combinations
data=['a','b','c']
result=list(combinations(data,2))
print(result)
#답: [('a', 'b'), ('a', 'c'), ('b', 'c')]
# 중복순열, 중복 조합
#중복 순열
#중복 허용해서 순서 고려하여 2개 뽑기
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')]
#중복 조합
#중복 허용해서 순서 고려하지 않고 2개 뽑기
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')]
* collection- 카운터counter
파이썬 collections 라이브러리의 counter는 등장 횟수를 세는 기능을 제공
리스트와 같은 반복 가능한 객체가 주어졌을 때 내부의 원소가 몇번 등장했는지 알려줌
*math 함수
- 최대 공약수: math.gcd( x, y )
- 최소 공배수: math.lcm( x, y )
🧐공부 한줄 평 : 기초를 배웠으니, 이제 그 다음 2강으로 넘어가볼까??
'😀 Language > - Python' 카테고리의 다른 글
[inflearn] 30분 요약강좌 시즌2: python 활용편-3(Matplotlib,Ploty) (0) | 2021.11.29 |
---|---|
[inflearn] 30분 요약 강좌 시즌2 : python 활용편 -2 (NUMPY/PANDAS) (0) | 2021.11.25 |
[inflearn] 30분 요약 강좌 시즌2 : python 활용편 -1 (0) | 2021.11.22 |
[샛길공부] 파이썬 최대공약수와 최대공배수 구하는 여러가지 방법 (0) | 2021.11.22 |
[샛길공부] 이진탐색(이분탐색) 문제풀기 (feat. 이코테 유튜브강의) (0) | 2021.11.14 |