배운것/Coding Test

이코테 2021 강의 몰아보기_1.코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기

SangPedia 2021. 2. 9. 00:16

 

집합 자료형

가)    집합의 특징

   ①     중복을 허용되지 않습니다.

   ②     순서가 없습니다.

나)    집합은 리스트 혹은 문자열을 이용해서 초기화 가능 합니다.

   ①     set() 함수 이용합니다.

다)    중괄호({})안에 각 원소를 콤마(,)를 기준으로 구분하여 삽입함으로써 초기화 가능합니다.

라)    데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리 합니다.

 

집합 자료형의 연산

 

집합의 연산코드

 

가)    합집합 :  집합 A에 속하거나 B에 속하는 원소로 이루어진 집합

나)    교집합 :  집합 A에 속하고 B에도 속하는 원소로 이루어진 집합

다)    차집합 :  집합 A의 원소 중에서 B에 속하지 않은 원소들로 이루어진 집합

집합 자료형 관련 함수

 

원소 추가 삭제 코드

 

사전 자료형과 집합 자료형의 특징

가)    리스트나 튜플으 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있습니다.

나)    사전 자료형과 집합 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻지 못합니다.

  ①   사전의 키(key) 혹은 집합의 원소(Element)를 이용해 O(1)의 시간 복잡도로 조회 합니다.

 

기본 입출력

가)    모든 프로그램은 적절한(약속된) 입출력 양식을 가지고 있습니다.

나)    프로그램 동작의 첫 번째 단계는 데이터를 입력 받거나 생성하는 것입니다.

다)    예시) 학생의 성적 데이터가 주어지고, 이를 내림차순으로 정렬한 결과를 출력하는 프로그램입니다.

 

자주 사용되는 표준 입력 방법

가)    input() 함수는 한 줄의 문자열을 입력 받는 함수 입니다.

나)    map() 함수는 리스트의 모든 원소에 각가 특정한 함수를 적용할 때 사용합니다.

     ex) 공백을 기준으로 구분된 데이터를 입력 받을 때는 다음과 같이 사용합니다.

list(map(int, input().split())

     ex) 공백을 기준으로 구분된 데이터의 개수가 많지 않다면 단순히 다음과 같이 사용합니다.

a, b, c = map(int, input().split())

 

입력을 위한 전형적인 소스코드 - 1

입력 소스코드 - 1

 

 

입력을 위한 전형적인 소스코드 - 2

입력 소스코드 - 2

가)    # n, m, k를 공백을 기준으로 구분하여 입력합니다.

n, m, k = map(int, input().split())

 

빠르게 입력 받기

가)    사용자로부터 입력을 최대한 빠르게 받아야 하는 경우가 있습니다.

나)    파이썬의 경우 sys 라이브러리에 정의되어 있는 sys.stdin.readline() 메서드를 이용합니다.
단, 입력 후 엔터(Enter)가 줄 바꿈 기호로 입력되므로 rstrip() 메서드를 함께 사용합니다.

 

자주 사용되는 표준 출력 방법

가)    파이썬에서 기본 출력은 print() 함수를 이용합니다.

        각 변수를 콤마(,)를 이용하여 띄어쓰기로 구분하여 출력할 수 있습니다.

나)    print()는 기본적으로 출력 이후에 줄 바꿈을 수행합니다.

        줄 바꿈을 원치 않는 경우 ‘end’ 속성을 이용할 수 있습니다.

 

출력을 위한 전형적인 소스코드

출력 소스코드

 

f-string 예제

가)    파이썬 3.6부터 사용가능하며, 문자열 앞에 접두사 ‘f’를 붙여 사용합니다.

나)    중괄호 안에 변수명을 기입하여 간단히 문자열과 정수를 함께 넣을 수 있습니다.

answer = 7
print(f"정답은{answer}입니다.")

 

조건문

가)    조건문은 프로그램의 흐름을 제어하는 문법입니다.

나)    조건문을 이용해 조건에 따라서 프로그램의 로직을 설정할 수 있습니다.

 

들여쓰기

가)    파이썬에서는 코드의 블록(Block)을 들여쓰기(Indent)로 지정합니다.

나)    탭을 시용하는 쪽과 공백 문자(space)를 여러 번 사용하는 쪽으로 두 진영이 있습니다.

다)    파이썬 스타일 가이드라인에서는 4개의 공백문자를 사용하는 것을 표준으로 설정합니다.

라)    조건문의 기본적인 형태는 if ~ elif ~ else 입니다.

마)    조건문은 사용할 때 elif 혹은 else 부분은 경우에 따라서 사용하지 않아도 됩니다.

if 조건문 1:
  조건문 1이 True일 때 실행되는 코드

elif 조건문 2:
  조건문 1에 해당하지 않고, 조건문 2가 Ture일 때 실행되는 코드

else:
  위의 모든 조건문이 모두 True 값이 아닐 때 실행되는 코드

 

성적 구간에 따른 학점 출력 예제

학점에 따른 출력 조건문 

 

성적이 90점 이상일때 A
90점 미만, 80점이상일때 B
80점 미만, 70점 이상일때 C
70점 미만일 때 F

 

비교 연산자

가)   비교 연산자는 특정한 두 값을 비교할 때 이용할 수 있습니다.

나)    대입 연산자(=)와 같음 연산자(==)의 차이점에 유의합니다.

비교 연산자 설명
X == Y X와 Y가 서로 같을 때 참(Ture)이다.
X != Y X와 Y가 서로 다를 때 참(Ture)이다.
X > Y X가 Y보다 클 때 참(Ture)이다.
X < Y X가 Y보다 작을 때 참(Ture)이다.
X >= Y X가  Y보다 크거나 같을 때 참(Ture)이다.
X <= Y X가 Y보다 작거나 같을 때 참(Ture)이다.

다)    논리 연산자는 논리값(True/False) 사이의 연산을 수행할 때 사용

논리 연산자 설명
X and Y X와 Y가 모두 참(Ture)일때, 참(Ture)이다.
X or Y X와 Y 중에 하나만 참(Ture)이여도 참(Ture)이다.
not X X가 거짓(False)일 때 참(Ture)이다.

 

파이썬의 기타 연산자

가)   다수의 데이터를 담는 자료형을 위해 in 연산자와 not in 연산자가 제공

       리스트, 튜플, 문자열, 딕셔너리 모두에게 사용이 가능

 

파이썬의 pass 키워드

 

 

pass 키워드

 

가)    아무것도 처리하고 싶지 않을 때 pass 키워드를 사용합니다.

    ex) 디버깅 과정에서 일단 조건문의 형태만 만들어 놓고 조건문을 처리하는 부분은 비워놓고 싶은경우

 

파이썬 조건문 내에서의 부등식

가)    다른 프로그래밍 언어와 다르게 파이썬은 조건문 안에서 수학의 부등식을 그대로 사용할 수 있습니다.

나)    예를 들어 x>0 and x<200<x<20은 같은 결과를 반환합니다.

다)    다른 언어와 헷갈리지 않도록 x > and x < 20와 같이 비교 연산자 사이에 and, or 등의 연산자가 들어가는 코드 이용합니다.

 

반복문

가)    특정한 소스코드를 반복적으로 실행하고자 할때 사용하는 문법입니다.

나)    파이썬에서는 while문과 for문이 있는데, 어떤 것을 사용해도 상관 없습니다.

        다만 코딩테스트에서의 실제 사용 예시를 확인해 보면, for문이 더 간결한 경우가 많습니다.

 

1부터 9까지 모든 정수의 합 구하기 예제(while문)

while 문

실행결과 : 45

 

1부터 9까지의 모든 홀수의 값을 구하기 예제

 

홀수값 구하기

실행결과 : 25

 

반복문에서의 무한 루프

x = 10

while x > 5:
	print(x)

    실행결과 :
    10
    10
    10
    10
    ... 
    (중략)

 

가)    무란루프(infinite Loop)란 끊임없이 반복되는 반복 구문을 의미합니다.

   ①     코딩테스트에서 무한 루프를 구현할 일은 거의 없으니 유의합니다.

   ②     반복문을 작성한 뒤에는 항상 반복문을 탈출할 수 있는지 확인합니다.

 

반복문: for문

가)   반복문으로 for문을 이용할 수 도 있습니다.

나)   for문의 구조는 다음과 같은데, 특정한 변수를 이용하여 'in' 뒤에 오는 데이터(리스트, 튜플 등)에 포함 되어있는 원소를 첫번째 인덱스부터 차례대로 하나씩 방문합니다.

for 변수 in 리스트:
	실행할 소스코드
    
array = [1, 2, 3, 4, 5]

for x in array:
	print(x)

실행결과 : 1 2 3 4 5

 

다)    for문에서 연속적인 값을 차례대로 순회할 때는 range()를 주로 사용합니다.

  이때 range(시작 값, 끝 값 +1) 형대로 사용합니다.

  인자를 하나만 넣으면 자동으로 시작 값은 0을 사용합니다.

result = 0

for i in range(1, 31):
	result += i
 
 print(result)

실행결과 : 465

 

파이썬의 continue 키워드

가)    반복문에서 남은 코드의 실행을 건너뛰고, 다음 반복을 진핼하고자 할 때, continue를 사용합니다.

나)    1부터 9까지의 홀수의 합을 구할 때 다음과 같이 작성할 수 있습니다.

result = 0
for i in range(1, 10):
	if i % 2 == 0:
    	continue
    result += i
print(result)

실행결과 : 25

파이썬의 break 키워드

가)    반복문을 즉시 탈출하고자 할 때 break를 사용합니다.

나)   1부터 5까지 정수를 차례대로 출력하고자 할 때 다음과 같이 작성할 수 있습니다.

i = 1

while true:
	print("현재 i의 값:", i)
    if i == 5:
    	break
    i += 1

실행결과 : 

현재 i의 값: 1

현재 i의 값: 2

현재 i의 값: 3

현재 i의 값: 4

현재 i의 값: 5

 

함수의 종류

가)    내장 함수 : 파이썬이 기본적으로 제공하는 함수

나)    사용자 정의 함수 : 개발자가 직접 정의하여 사용할 수 있는 함수

 

함수 정의하기

가)    프로그램에서는 똑같은 코드가 반복적으로 사용되어야 할 때가 많음

나)    함수를 사용하면 소스코드의 길이를 줄일 수 있음

 

    매개변수 : 함수 내부에서 사용할 변수

    반환값 : 함수에서 처리 된 결과를 반환

def 함수명(매개변수):
	실행할 소스코드
    return 변환 값
# 더하기 함수 예시 1
def add(a, b):
	return a+b

print(add(3, 7))

# 더하기 함수 예시 2
def add(a, b):
	print('함수의 결과:',a+b)

add(3, 7)

실행결과 :  10

               함수의 결과 : 10

 

global 키워드

가)    global 키워드로 변수를 지정하면 해당 함수에서는 지역 변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조하게 됩니다.

a = 0

def func():
    global a
    a += 1
    
    for i in range(10):
    func()
    
print(a)
array = [1,2,3,4,5]

def fun():
	array = [3,4,5]
    array.append(6)
    print(array)
    
func()
print(array)

실전에서 유용한 표준 라이브러리

가)    내장 함수 :  기본 입출력 함수부터 정렬 함수까지 기본적인 함수를 제공

      파이썬 프로그램을 작성할 때 없어서는 안되는 필수적인 기능을 포함

나)    itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 우용한 기능을 제공

    특히, 순열과 조합 라이브러리는 코딩테스트에서 자주 이용

다)    heapq : 힙(Heap) 자료구조를 제공, 일반적으로 우선순위 큐 기능을 구현하는데 사용

라)    bisect : 이진 탐색(Binary Search) 기능 제공
마)    collections : 덱(deque), 카운터(Counter) 등의 유용한 자료 구조를 포
바) math : 필수적인 수학기능을 제공
,  팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수부터 파이(pi)와 같은 상수를 포함

 

순열과 조합

가)    모든 경우의 수를 고려해야 할 때 어떤 라이브러리를 효과적으로 사용할 수 있을까요?

나)    순열 : 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것

다)    조합 : 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택하는 것

 

순열의수 nPr = n * (n - 1)*(n - 2)*(n - 3)*  *(n - r  + 1)

조합의수 nCr = n * (n - 1)*(n - 2)*(n - 3)*  *(n - r  + 1)  /  r!

 

from itertools import combinations

data = ['A','B','c']

rusult = list(combinations(data, 2))
print(result)

중복 순열과 중복 조합

from itertools import product

data = ['A','B','C']

rusult = list(product(data, reoeat = 2)) #2개를 뽑은 모든 순열 구하기 (중복 허용)
print(result)

from itertools import combinations_with_replacement

data = ['A','B','C']

result = list(combination_with_replacement(data, 2)) #2개를 뽑은 모든 조합 구하기 (중복 허용)
print(result)

Counter

1)    파이썬 collections  라이브러리의 Counter는 등장 횟수를 세는 기능을 제공합니다.

2)    리스트와 같은 반복 가능한(iterable) 객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지 알려줍니다.

from collections import Counter

Counter = 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 }

반응형