Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 캐글
- 직원 이직률
- Brigthics Studio
- 혼공머신러닝딥러닝
- Brightics를 이용한 분석
- 삼성 SDS
- 삼성 SDS Brigthics
- 삼성SDS
- 영상제작기
- 브라이틱스
- 팀 분석
- 브라이틱스 서포터즈
- Brightics
- Brigthics를 이용한 분석
- 데이터분석
- 모델링
- 혼공머신
- Brigthics
- 포스코 아카데미
- 포스코 청년
- 혼공
- Brightics Studio
- 삼성SDS Brightics
- 노코드AI
- 혼공학습단
- 직원 이직여부
- 삼성SDS Brigthics
- 개인 의료비 예측
- 데이터 분석
- 추천시스템
Archives
- Today
- Total
데이터사이언스 기록기📚
[이것이 취업을 위한 코딩테스트다 with 파이썬] 코딩테스트를 위한 파이썬 문법_입출력,주요 라이브러리의 문법과 유의점 본문
Coding Test/이것이 취업을 위한 코딩테스트이다 with 파이썬
[이것이 취업을 위한 코딩테스트다 with 파이썬] 코딩테스트를 위한 파이썬 문법_입출력,주요 라이브러리의 문법과 유의점
syunze 2022. 3. 18. 23:14'이것이 취업을 위한 코딩테스트이다 with 파이썬'의 기본 파이썬 문법 부분을 정리 및 학습한 포스팅입니다.
목차
1. 자료형
- 수 자료형
- 리스트 자료형
- 문자열 자료형
- 튜플 자료형
- 사전 자료형
- 집합 자료형
2. 조건문
3. 반복문
- while문
- for문
4. 함수
5. 입출력
6. 주요 라이브러리의 문법과 유의점
5. 입출력
1) 데이터 입력 받기
- (알고리즘 순서) 적절한 입력 -> 적절한 알고리즘 수행 -> 결과 출력
- 알고리즘의 첫번째 단계, 데이터 입력받기
데이터 입력받기 - 한 줄의 문자열을 입력받기 -> input() - 입력받은 데이터 정수형 데이터로 처리 -> int(input()) - 입력받은 문자열을 띄어쓰기로 구분 후, 각각 정수 자료형의 리스트 데이터로 저장 -> list(map(int,input().split())) • input().split() : 입력받은 문자열 공백으로 나누어 리스트로 저장 • map(int, input().split()) : 해당 리스트 모든 원소에 int() 함수 적용 • list(map(int,input().split())) : 마지막으로 결과를 list로 바꿈 |
# 입력을 위한 전형적인 소스코드
n = int(input())
# 각 데이터를 공백으로 구분하여 입력
data = list((map(int, input().split()))
data.sort(reverse = True)
print(data)
# 공백을 기준으로 구분하여 적은 수의 데이터 입력
n ,m, k = map(int,input().split())
print(n, m, k)
- (입력 받는 것만으로도 시간 초과를 받을 수 있으므로) 입력을 최대한 빠르게 받는 방법 알고있어야함 -> sys.stdin.readline()
# 입력 빨리 받는 소스코드(input()은 동작 속도가 느려 시간 초과로 오답판정 받을 수 있음)
import sys
sys.stdin.readline().rstrip() # readline() 입력 후 엔터가 줄바꿈으로 입력, 공백문자 제거 위해 rstrip() 사용
# readline() 사용 소스코드 예시
import sys
data = sys.stdin.readline().rstrip()
print(data)
2) 데이터 출력하기
- print() : 변수, 상수를 매개변수로 입력 -> 표준출력으로 출력
# 변수 출력 예시
a = 1
b = 2
print(a,b)
# 출력 줄 바꿈 예시
a = 1
b = 2
print(a)
print(b)
# 출력시 오류 발생하는 코드 예시
ans = 7
print("정답은"+ ans + "입니다.") # 오류 : 문자열 자료형끼리만 더하기 연산 가능
# 해결책1) 변수 -> 문자열로 바꾸어 출력
ans = 7
print("정답은"+ str(ans) + "입니다.")
# 해결책2) 각 변수를 ,로 구분하여 출력
ans = 7
print("정답은", ans, "입니다.")
# 해결책3) f-string 문법 사용
ans = 7
print(f"정답은 {ans} 입니다.") # 문자열 앞에 f붙이기, {}안에 변수 넣기
6. 주요 라이브러리의 문법과 유의점
- 표준 라이브러리 : 특정한 프로그래밍 언어에서 자주 사용되는 표준 소스코드를 미리 구현해 놓은 라이브러리
1) 내장 함수
내장함수 - print(), input()과 같은 기본 입출력 기능과 sorted()와 같은 정렬 기능을 포함한 기본 내장 라이브러리 - import 명령어 없이 바로 사용 가능 |
- sum() : iterable 객체(반복가능한 객체 - 리스트, 사전, 튜플)가 입력으로 주어졌을 때 모든 원소의 합 반환
- min() : 파라미터 2개 이상일 때 가장 작은 값 반환
- max() : 파라미터 2개 이상일 때 가장 큰 값 반환
- eval() : 수학 수식이 문자열 형식으로 들어오면 해당 수식 계산 결과 반환
- sorted() : iterable 객체가 들어왔을 때 정렬된 결과를 반환
# sum 예시
result = sum([1,2,3,4,5])
print(result) # 출력 : 15
# min 예시
result = min(7,3,5,2)
print(result) # 출력 : 2
# max 예시
result = max(7,3,5,2)
print(result) # 출력 : 7
# eval 예시
result = eval("(3+5)*7")
print(result) # 출력 : 56
# sorted 예시
result = sorted([9,1,8,5,4])
print(result) # 출력 : [1, 4, 5, 8, 9]
result = sorted([9,1,8,5,4], reverse = True)
print(result) # 출력 : [9, 8, 5, 4, 1]
result = sorted([('홍길동', 35), ('이순신', 75), ('아무개', 50)], key = lambda x : x[1], reverse = True)
print(result) # 출력 : [('이순신', 75), ('아무개', 50), ('홍길동', 35)]
# list는 sort()함수 내장
data = [9,1,8,5,4]
data.sort()
print(data) # 출력 : [1, 4, 5, 8, 9]
2) itertools
- itertools : 파이썬에서 반복되는 데이터를 처리하는 기능
- permutations : iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열) 계산
-> 클래스여서 객체 초기화 이후 리스트 자료형으로 변환하여 사용 - combinations : iterable 객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우(조합) 계산
-> 클래스여서 객체 초기화 이후 리스트 자료형으로 변환하여 사용 - product : iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)을 계산. 원소를 중복하여 뽑음
-> 객체 초기화 시, repeat 속성값으로 넣어줌
-> 클래스여서 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용 - combinations_with_replacement : iterable 객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우(조합) 계산. 원소를 중복하여 뽑음
-> 클래스여서 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용
# permutations 예제
from itertools import permutations
data = ['A','B','C']
result = list(permutations(data,3)) # 모든 순열 구하기
print(result) # 출력 : [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
# combinations 예제
from itertools import combinations
data = ['A','B','C']
result = list(combinations(data, 2)) # 2개를 뽑는 모든 조합 구하기
print(result) # 출력 : [('A', 'B'), ('A', 'C'), ('B', 'C')]
# product 예제
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')]
# combinations_with_replacement 예제
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')]
3) heapq
- heapq : heap 기능을 제공하는 라이브러리. 우선순위 큐 기능을 구현하기 위해 사용
- heapq.heappush() : 힙에 원소를 삽입
- heapq.heappop() : 힙에 원소를 꺼내고자 할 때
+) 최소 힙으로 구성, 원소 넣었다 빼기 -> 시간복잡도 O(NlogN) 오름차순 정렬
# heapq 예제_heap 정렬
import heapq
def heapsort(iterable):
h = []
result = []
# 모든 원소를 차례대로 힙에 삽입
for value in iterable:
heapq.heappush(h, value)
# 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
for _ in range(len(h)):
result.append(heapq.heappop(h))
return result
result = heapsort([1,3,5,7,9,2,4,6,8,0])
print(result) # 출력 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# heap예제_최대 힙 구현으로 내림차순 힙 정렬 구현(삽입 전 부호 반대로, 꺼낸 후 부호 반대로)
import heapq
def heapsort(iterable):
h = []
result = []
# 모든 원소를 차례대로 힙에 삽입
for value in iterable:
heapq.heappush(h, -value)
# 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
for _ in range(len(h)):
result.append(-heapq.heappop(h))
return result
result = heapsort([1,3,5,7,9,2,4,6,8,0])
print(result) # 출력 : [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
4) bisect
- bisect : 이진탐색 기능을 제공하는 라이브러리, 정렬된 배열에서 특정원소 찾기에 효과적
- bisect_left(a,x) : 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메서드
- bistect_right(a,x) : 정렬된 순서를 유지하도록 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메서드
# bisect 예제
from bisect import bisect_left, bisect_right
a = [1,2,4,4,8]
x = 4
print(bisect_left(a, x)) # 출력 : 2
print(bisect_right(a, x)) # 출력 : 4
# bisect 예제_ 정렬된 리스트에서 값이 특정 범위에 속하는 원소의 개수 구하기
from bisect import bisect_left, bisect_right
def count_by_range(a, left_value, right_value):
right_index = bisect_right(a, right_value)
left_index = bisect_left(a, left_value)
return right_index - left_index
a = [1,2,3,3,3,3,4,4,8,9]
print(count_by_range(a, 4,4)) # 출력 : 2
print(count_by_range(a, -1, 3)) # 출력 : 6
5) collections
- collections : deque, Counter 등의 유용한 자료구조를 포함하고 있는 라이브러리
- deque() : deque를 이용하여 큐 구현, 스택이나 큐 자료구조의 대용으로 사용 가능
-> popleft() : 첫번째 원소 제거 / pop() : 마지막 원소 제거
-> appendleft(x) : 첫번째 인덱스에 원소 x 삽입 / append(x) : 마지막 인덱스에 원소 x 삽입
-> 인덱싱, 슬라이싱 기능 사용 불가
-> list와 deque의 비교
list | deque | |
가장 앞쪽 원소 추가 | O(N) | O(1) |
가장 뒤쪽 원소 추가 | O(1) | O(1) |
가장 앞쪽 원소 제거 | O(N) | O(1) |
가장 뒤쪽 원소 제거 | O(1) | O(1) |
# deque 예제
from collections import deque
data = deque([2,3,4])
data.appendleft(1)
data.append(5)
print(data) # 출력 : deque([1, 2, 3, 4, 5])
print(list(data)) # 출력 : [1, 2, 3, 4, 5]
+) 큐 자료구조로 이용 - 원소 삽입 append(), 원소 삭제 popleft() 사용
- Counter() : 등장 횟수를 세는 기능, 해당 객체 내부의 원소가 몇 번씩 등장했는지 알려줌
# Counter 예제
from collections import Counter
counter = Counter(['red','blue','red','green','blue','blue'])
print(counter['blue']) # 출력 : 3
print(counter['green']) # 출력 : 1
print(dict(counter)) # 출력 : {'red': 2, 'blue': 3, 'green': 1}
6) math
- math : 자주 사용되는 수학적인 기능을 포함하는 라이브러리.팩토리얼, 제곱근, 최대공약수 등을 계산하는 기능 포함
- factorial(x) : x! 값 반환
- sqrt(x) : x의 제곱근
- gcd(a,b) : 최대공약수 구하기
- pi : 파이, e : 자연상수 e
# factorial 예제
import math
print(math.factorial(5)) # 출력 : 120
# sqrt 예제
import math
print(math.sqrt(7)) # 출력 : 2.6457513110645907
# 최대공약수 예제
import math
print(math.gcd(21,14)) # 출력 : 7
# 파이, 자연상수e 예제
import math
print(math.pi) # 출력 : 3.141592653589793
print(math.e) # 출력 : 2.718281828459045
코딩 테스트를 위한 파이썬 문법 정리 끝!
728x90
'Coding Test > 이것이 취업을 위한 코딩테스트이다 with 파이썬' 카테고리의 다른 글
[이것이 취업을 위한 코딩테스트다 with 파이썬] Ch.6 정렬 (0) | 2022.04.19 |
---|---|
[이것이 취업을 위한 코딩테스트다 with 파이썬] Ch.4 구현 (0) | 2022.04.14 |
[이것이 취업을 위한 코딩테스트다 with 파이썬] Ch.3 그리디 (0) | 2022.03.25 |
[이것이 취업을 위한 코딩테스트다 with 파이썬] 코딩테스트를 위한 파이썬 문법_조건문, 반복문, 함수 (0) | 2022.03.18 |
[이것이 취업을 위한 코딩테스트다 with 파이썬] 코딩테스트를 위한 파이썬 문법_자료형 (0) | 2022.03.15 |
Comments