😀 Language/- Python

[기특공부] 이코테 1강. 코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기

또방91 2021. 11. 25. 14:05
728x90

 

 


* 강의 채널 : 동빈나

* 강의 이름 : (이코테 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

 

[파이썬] 다양한 입력함수 input(), sys.stdin.readline(), rstrip(), lstrip(), strip() 사용 - 공부하는 도비

오늘은 파이썬의 다양한 입력 방법에 대해 알아보겠습니다. 파이썬에서 가장 자주 쓰는 입력 함수는 input()이 있죠? 하지만 입력 값을 수 백, 수 천개 받을 때는, 입출력 속도를 위해서 sys.stdin 함

yang-wistory1009.tistory.com

 

* 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강으로 넘어가볼까??

 

 

 

 

728x90