본문 바로가기
Data Science

[코딩테스트] 파이썬 문법 기초 복습 : 입출력부터 자주 쓰이는 라이브러리까지

by Lora Baek 2022. 12. 20.
300x250

자주 사용되는 입력 방법

input() : 한 줄의 문자열을 입력받는 함수

map() : 리스트의 모든 원소에 각각 특정한 함수를 적용

 

ex)공백 기준으로 구분된 데이터 입력받을 때

n = int(input())

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

data.sort(reverse=True)

print(data)

 

a,b,c = map(int,input().split()) #이렇게 변수 갯수를 지정해줄 수도 있다.

print(a,b,c)

 

빠르게 입력 받으려면

sys library의

sys.stdin.readline() 메서드를 이용하면 된다.

단, 입력 후 enter가 줄 바꿈 기호로 입력되므로 rstrip() 메서드를 그 다음에 사용해주자.

 

import sys

data = sys.stdin.readline().rstrip()

print(data)

입력 갯수가 많은 문제, 이진탐색, 정렬, 그래프 등에서 많이 사용된다.

 

출력 방법

print()

줄바꿈을 원치 않으면 : print(7, end=" ")와 같이 공백문자를 넣어줄 수 있음.

print("정답은"+str(answer)+"입니다".) #문자열과 정수를 함께 넣을 수 없다.

 

f-string : 중괄호 안에 변수명을 넣어 문자열과 정수를 함께 넣을 수 있다.

answer = 7

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

 

조건문

프로그램의 흐름 제어. 

크드 블록을 들여쓰기(indent)로 지정하며, 띄어쓰기 4번

if 조건문 1:

    조건문 1이 true일 때 실행되는 코드

elir 조건문 2:

    조건문 1이 false고 조건문 2가 true일 때

else:

    위의 조건문들이 모두 false일 때

 

 

비교 연산자

X==Y

X!=Y

X>Y

X<Y

X>=Y

X<=Y

 

* 대입연산자 =와 같음 연산자 ==의 차이점에 유의

 

논리 연산자 : 논리 값 사이의 연산을 수행할 때 사용

X and Y

X or Y

not X

 

기타 연산자

x in  리스트

x not in 문자열

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

 

pass 키워드

아무것도 처리하고 싶지 않을 때 pass 키워드를 사용하면 됨.

 

조건문의 간소화

실행될 소스코드가 한 줄일 경우, 줄바꿈 없이 아래와 같이 표현

score = 85

if score >=80 : result = "Success"

else: result="Fail"

 

조건부 표현식(condititional expression)

if~else문을 한 줄에 작성할 수 있게 해줌. 단, if 순서에 유의하자.

score = 85

result = "Success" if score>=80 else "Fail

print(result)

 

조건문 내에서 수학의 부등식 그대로 사용 가능하지만, 다른 언어 다룰 때 헷갈리지 않도록

0<x<20 보다는 x>0 and x<20을 사용하자.

 

 

반복문

while문 for문이 있으나, for문이 더 간결한 경우가 많다.

무한 루프(infinite loop) 주의 : 반복문 작성 후에는 항상 반복문을 탈출할 수 있는지 확인하자.

 

for 변수 in 리스트:

    실행할 소스코드

특정 변수를 이용하여 in 뒤의 데이터(리스트, 튜플)에 포함된 원소를 첫 번째 인덱스부터 차례대로 하나씩 실행.

 

range(시작 값, 끝 값+1) 형태로 사용

인자를 하나만 넣으면 자동으로 시작 값은 0이 된다.

 

continue

반복문에서 남은 코드의 실행을 건너뛰고 다음 반복을 진행하고자 할 때

예를 들어, 1부터 9까지의 홀수의 합 구할 때

result = 0

for i in range(1,10):

    if i%2 ==0:

        continue

    result +=i

print(result)

 

break

반복문을 즉시 탈출하고자 할 때.

ex ) 1부터 5까지의 정수 출력

i =1

while True:

    print("현재 i의 값:", i)

    if i==5:

        break

    i =+1

 

함수

특정 작업을 하나의 단위로 묶어 놓는 것.

 

함수 안에서의 변수로 함수 바깥의 변수를 쓰고자 한다면, 변수 바로 윗줄에 global a 와 같은 식으로 변수를 지정하면 지역변수를 만들지 않고 전역변수를 그대로 사용한다.

 

전역변수와 지역변수가 같은 이름이 있다면, 함수 안에서는 지역변수를 우선적으로 참조한다.

(함수 밖에서는 당연히 전역변수를 참조함)

 

실제로 코딩테스트 문제를 풀 때는 헷갈릴 경우가 잘 없다.

 

여러 반환값을 가질 수 있어 편하게 사용도 가능하다.

def operator(a,b):

    one = a+b

    two = a-b

    three = a*b

    four = a/b

    return one, two, three, four

 

a,b,c,d = operator(7,6)

print(a,b,c,d)

 

람다 표현식

print((lambda a,b:a+b)(3,7)) #a와 b를 더한 람다 표현식

함수 자체를 입력으로 받는 또다른 함수가 있을 때 효과적으로 사용할 수 있다.

sort같은 내장 함수에서 자주 사용된다.

 

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])) #람다함수로 간단하게 한 줄로 정렬 가능하다.

 

#여러 개의 리스트의 각 원소에 동일한 처리를 할 때도 확인 가능

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]

유용한 표준 라이브러리

코딩테스트에서 사용 빈도가 높은 것

1. 내장 함수

: print, input, sum, min, max,

eval() #사람의 입장에서 수식으로 표현된 하나의 식을 반환. eval("(3+5)*7)

sorted(데이터, key = (주로 람다식), reverse=True)

 

2. itertools

반복되는 형태의 데이터 처리. 순열과 조합 라이브러리는 코딩 테스트에서 자주 사용

순열 : 서로 다른 n개에서 서로 다른 r개를 선택해 일렬로 나열. nPr

조합 : 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택 nCr

from itertools import permutations

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

result1 = list(permutations(data,3)) #순열

result2 = list(combinations(data,2)) #조합

 

중복을 허용해서 구할 때는 아래와 같이

#중복 순열 : 2개를 뽑는 모든 순열 구하기, 중복 허용

from itertools import product

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

result1 = list(product(data, repeat=2))

 

from itertools import combinatios_with_replacement

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

result2 = list(combinations_with_replacement(data,2))

 

3. heapq : 힙(heqp) 자료구조 제공. 우선순위 큐 기능 구현에 사용

* 추후 다룸

4. bisect : 기본적인 이진 탐색 기능 제공

*추후 다룸

 

5. collections : 덱(deque), 카운터(counter) 등의 유용한 자료구조 포함

Counter : 등장 횟수를 세는 기능. 리스트와 같은 반복 가능한 객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지 알려줌

from collections import Counter

counter = Counter(['r','b','r','g','b','b'])

print(counter['b']) #b가 등장한 횟수 출력

print(dict(counter) #사전 자료형으로 변환

 

6. math : 필수적인 수학적 기능. pi 등도 다 있음

최대공약수 : gcd -> 최소 공배수:lcm 만들 수 있음

 

import math

def lcm(a,b):

    return a*b // math.gcd(a,b)

a=21

b=14

 

print(math.gcd(21,14))

print(lcm(21,14))

 

코딩테스트 준비하기

2022.12.18 - [Data Science] - [코딩테스트] 코딩테스트 및 관련 알고리즘의 개요

2022.12.19 - [Data Science] - [코딩테스트] 파이썬 문법 기초 복습 : 자료형

 

https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC 

*내용에 대한 모든 저작권은 해당 영상의 원저작자에게 있습니다.

댓글