자주 사용되는 입력 방법
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
*내용에 대한 모든 저작권은 해당 영상의 원저작자에게 있습니다.
'Data Science' 카테고리의 다른 글
[코딩테스트] 구현, 시뮬레이션과 완전 탐색 (2) | 2022.12.24 |
---|---|
[코딩테스트] 그리디 알고리즘(Greedy), 탐욕법 (0) | 2022.12.23 |
[코딩테스트] 파이썬 문법 기초 복습 : 자료형 (0) | 2022.12.19 |
[코딩테스트] 코딩테스트 및 관련 알고리즘의 개요 (0) | 2022.12.18 |
[네이버 DataScience 스터디 8기] 부스트코스 강의 듣는 법 (0) | 2022.10.26 |
댓글