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
- Brightics
- 삼성SDS Brigthics
- 혼공머신러닝딥러닝
- 브라이틱스 서포터즈
- 데이터분석
- 포스코 아카데미
- 삼성SDS Brightics
- 영상제작기
- 혼공
- 직원 이직여부
- 혼공머신
- 직원 이직률
- 포스코 청년
- Brightics Studio
- 캐글
- 개인 의료비 예측
- 노코드AI
- Brigthics
- 데이터 분석
- 혼공학습단
- Brigthics를 이용한 분석
- 삼성 SDS
- 모델링
- 삼성SDS
- 추천시스템
- 팀 분석
- 브라이틱스
- 삼성 SDS Brigthics
- Brigthics Studio
- Brightics를 이용한 분석
Archives
- Today
- Total
데이터사이언스 기록기📚
[이것이 취업을 위한 코딩테스트다 with 파이썬] 코딩테스트를 위한 파이썬 문법_자료형 본문
Coding Test/이것이 취업을 위한 코딩테스트이다 with 파이썬
[이것이 취업을 위한 코딩테스트다 with 파이썬] 코딩테스트를 위한 파이썬 문법_자료형
syunze 2022. 3. 15. 18:46'이것이 취업을 위한 코딩테스트이다 with 파이썬'의 기본 파이썬 문법 부분을 정리 및 학습한 포스팅입니다.
목차
1. 자료형
- 수 자료형
- 리스트 자료형
- 문자열 자료형
- 튜플 자료형
- 사전 자료형
- 집합 자료형
2. 조건문
3. 반복문
- while문
- for문
4. 함수
5. 입출력
6. 주요 라이브러리의 문법과 유의점
1. 자료형
1) 수 자료형
- 정수형
# 양의 정수
a = 100
print(a)
# 음의 정수
b = -2
print(b)
# 0
c = 0
print(c)
- 실수형
# 양의 실수
a = 157.93
print(a)
# 음의 실수
b = -193.2
print(b)
# 소수부가 0일 때 0 생략
c = 5.
print(c) # 출력 : 5.0
# 정수부가 0일 때 0 생략
d = .7
print(d) # 출력 : 0.7
- 지수 표현 방식
# 10억
a = 1e9
print(a) # 출력 : 100000000
#752.5
b = 75.25e1
print(b)
# 3.954
c = 3954e-3
print(c)
+) 컴퓨터는 실수를 정확히 표현하지 못한다.(10진수 2진수 체계의 차이 때문, 컴퓨터는 2진수)
-> 실수 값 비교하는 문제일때 round() 함수 사용하여 표현하기
round() - 소수점 특정 자리 수에서 반올림 - 사용 : round( 실수형 데이터 , 반올림 위치-1) - 예시 : round(123.54, 1) -> 출력 : 123.5 |
# 0.899999999 출력으로 False 출력
a = 0.3 + 0.6
print(a) # 출력 : 0.8999999999999999
if a == 0.9:
print(True)
else:
print(False) # 출력 : False
# round() 함수 이용하여 0.9, True 출력
b = 0.3 + 0.6
print(round(b,4)) # 출력 : 0.9
# 5번째 자리에서 반올림하여 4번째 자리까지 출력, 코테에서는 5번째 반올림이 정답인 경우 다수
if round(b,4) == 0.9:
print(True)
else:
print(False) # 출력 :True
- 수 자료형 연산
나누기 연산자(/)와 몫 연산자(//) - 나누기 연산자(/) : 나눠진 결과 실수형으로 처리 예제) 7 / 3 답) 2.333333333333 - 몫 연산자(//) :나눠진 결과 정수형 예제) 7 // 3 답) 2 |
거듭제곱 연산자(**) - a**b 형식으로 사용 |
a = 7
b = 3
# 더하기
print(a+b) # 출력 : 10
# 빼기
print(a-b) # 출력 : 4
# 곱하기
print(a*b) # 출력 : 21
# 나누기
print(a/b) # 출력 : 2.3333333333333335
# 나머지
print(a%b) # 출력 : 1
# 몫
print(a//b) # 출력 : 2
# 거듭제곱
print(a**b) # 출력 : 343
2) 리스트 자료형
리스트 - 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용 - 내부적으로 배열을 채택 - 연결 리스트 자료구조 기능 포함(append(), remove() 메서드 지원) - 배열 or 테이블로 불리기도 함 |
- 리스트 만들기
리스트 만들기 - 리스트 초기화 : list() , a = [] - 리스트 원소 접근 : 인덱스 값을 괄호 안에 넣기 (a[1] , 인덱스는 0부터 시작) |
# 빈 리스트 선언 방법_1
b = list()
print(b)
# 빈 리스트 선언 방법_2
c = []
print(c)
# 리스트 만들기
a = [1,2,3,4,5,6,7,8,9]
print(a)
# 다섯번째 원소에 접근
print(a[4])
- 코딩 테스트에서 많이 사용되는 크기 N인 1차원 리스트 초기화
# (in 코딩테스트) 크기가 N이고 1차원 리스트 초기화
n = 10
a = [0] * n
print(a) # 출력 : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- 리스트의 인덱싱과 슬라이싱
인덱싱과 슬라이싱 - 인덱싱 : 인덱스 값을 입력하여 특정한 원소에 접근 인덱스 값은 양의 정수, 음의 정수 사용 가능 (예시 : a[5], a[-1]) - 슬라이싱 : 리스트에서 연속적인 위치를 갖는 원소 가져올때 사용 a[시작 : 끝 인덱스-1] (예시 : a[2:6]) |
a = [1,2,3,4,5,6,7,8,9]
# 뒤에서 첫번째 원소 출력
print(a[-1])
# 뒤에서 세번째 원소 출력
print(a[-3])
# 네번째 원소 값 변경
a[3] = 10
print(a) # 출력 : [1,2,3,10,5,6,7,8,9]
# 두번째 원소부터 네번째 원소까지
print(a[1:4])
- 리스트 컴프리헨션
리스트 컴프리헨션 - 리스트를 초기화 하는 방법 중 하나 - [] 안에 조건문과 반목문을 넣는 방식으로 리스트 초기화 할 수 있음 - 리스트 컴프리헨션 사용 시 소스코드가 훨씬 짧고 간결 |
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트 만들기
a = [i for i in range(0,20) if i % 2 == 1]
print(a) # 출력 : [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
# 1부터 9까지 수의 제곱 값을 포함하는 리스트 만들기
b = [i*i for i in range(1,10)]
print(b) # 출력 : [1, 4, 9, 16, 25, 36, 49, 64, 81]
- 리스트 컴프리헨션은 코딩테스트에서 2차원 리스트 초기화 할때 효과적으로 사용
# N * M 크기의 2차원 리스트 초기화
n = 3
m = 5
a = [[0] *m for _ in range(n)]
print(a) # 출력 : [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
# (잘못된 예시) N * M 크기의 2차원 리스트 초기화
n = 3
m = 5
a = [[0] * m] * n
print(a) # 출력 : [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
a[1][1] = 5
print(a) # 출력 : [[0, 5, 0, 0, 0], [0, 5, 0, 0, 0], [0, 5, 0, 0, 0]]
# 내부적으로 포함된 3개의 리스트가 동일한 객체에 대한 3개의 레퍼런스로 인식
- 리스트 관련 기타 메서드
리스트 기타 메서드 - append() : 리스트에 원소 하나 삽입할 때 사용 (예시 : a.append(4) , 시간복잡도 : O(1)) - sort() 1) 기본 정렬 기능으로 오름차순으로 정렬 (예시 : a.sort() , 시간복잡도 : O(NlogN)) 2) 내림차순으로 정렬 (예시 : a.sort(reverse = True) , 시간복잡도 : O(NlogN)) - reverse() : 리스트의 원소 순서를 모두 뒤집어 놓음 (예시 : a.reverse() , 시간복잡도 : O(N)) - insert() : 특정한 인덱스 위치에 원소 삽입할 때 사용 (예시 : a.insert(삽입할 위치 인덱스,삽입할 값) a.insert(3,5), 시간 복잡도 : O(N)) - count() : 리스트에서 특정 값을 가지는 데이터 개수를 셀 때 사용 (예시 : a.count(특정 값) a.count(2) , 시간복잡도 : O(N)) - remove() : 특정한 값을 갖는 원소를 제거하는데 값을 가진 원소가 여러개이면 하나만 제거 (예시 : a.remove(특정 값) a.remove(8) , 시간복잡도 : O(N)) |
a = [1,5,7]
print("기본 리스트:",a)
# 리스트에 원소 삽입
a.append(2)
print("삽입:",a) # 출력 : 삽입: [1, 5, 7, 2]
# 오름차순 정렬
a.sort()
print("오름차순 정렬:",a) # 출력 : 오름차순 정렬: [1, 2, 5, 7]
# 내림차순 정렬
a.sort(reverse=True)
print("내림차순 정렬:",a) # 출력: 내림차순 정렬: [7, 5, 2, 1]
# 리스트 원소 뒤집기
a.reverse()
print("원소 뒤집기:",a) # 출력 : 원소 뒤집기: [1, 2, 5, 7]
# 특정 인덱스에 데이터 추가
a.insert(3,6)
print("데이터 추가:",a) # 출력 : 데이터 추가: [1, 2, 5, 6, 7]
# 특정 값인 데이터 개수 세기
print("1인 원소 개수 세기:",a.count(1)) # 출력 : 1인 원소 개수 세기: 1
# 특정 데이터 값 삭제
a.remove(5)
print("원소 5 삭제:", a) # 출력 : 원소 5 삭제: [1, 2, 6, 7]
- insert() 중간에 원소 삽입한 후에 리스트 원소 위치 조정 필요 - 시간복잡도 O(N) => insert() 함수 많이 사용시 '시간초과'로 테스트 통과 못할 수 있다.
- remove() 또한 중간에 있는 원소 삭제한 다음에 리스트 원소 위치 조정 - 시간복잡도 O(N)
+) 특정한 값의 원소 모두 제거
# 특정한 값의 원소 모두 제거
a = [1,2,3,4,5,5,5]
remove_set = {3,5}
# remove_set에 포함되지 않는 값만을 저장
result = [i for i in a if i not in remove_set]
print(result) # 출력 : [1, 2, 4]
3) 문자열 자료형
- 문자열 초기화
문자열 초기화 - "(큰따옴표), '(작은따옴표)를 이용 - 문자열을 큰따옴표(")로 구성하는 경우, 작은따옴표(')를 포함할 수 있다. 반대의 경우도 가능 - \ 이용하면 원하는 만큼 문자열 표시 가능 (\" or \') |
# 문자열 연습
data = 'Hello Python'
print(data) # 출력 : Hello Python
data = "Don't you know \"Python\"?"
print(data) # 출력 : Don't you know "Python"?
- 문자열 연산
# 문자열 변수 덧셈(+)
a = "Hello"
b = "World"
print(a+b) # 출력 : HelloWorld
# 문자열 곱셈
c = "String"
print(c * 3) # 출력 : StringStringString
# 문자열 인덱싱과 슬라이싱
d = "ABCDEF"
print(d[2:5]) # 출력 : CDE
4) 튜플 자료형
튜플 - 리스트와 유사하지만 다른점이 있다 - 튜플은 한번 선언된 값을 변경할 수 없다 - 리스트 [], 튜플 () 이용 - 리스트에 비해 공간 효율적 - 각 원소의 성질이 다를 때 주로 사용 |
# 튜플 값 변경 시 생기는 오류
a = (1,2,3,4,5)
a[2] = 7
# ---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-25-38a8875b10de> in <module>()
1 a = (1,2,3,4,5)
----> 2 a[2] = 7
TypeError: 'tuple' object does not support item assignment
- 튜플 그래프 알고리즘 구현 시 자주 사용
- (다익스트라 최단 경로) 우선순위 큐 사용, 우선순위 큐 값 변경되지 않음
- 우선순위 큐의 데이터 -> 튜플로 구성하여 소스코드 작성
- 변경하면 안되는 값이 변경되고 있지 않는지 체크 가능
- (비용, 노드 번호) 형태로 튜플과 묶어서 관리
5) 사전 자료형
- 사전 자료형 소개
사전 자료형 - key, value의 쌍을 데이터로 가지는 자료형 - key를 사용하여 value에 접근 가능 - 내부적으로 '해시 테이블' 이용 -> 데이터 검색 및 수정에 있어 O(1) 시간에 처리 가능 - key, value 쌍으로 구성된 데이터를 리스트보다 훨씬 빠르게 동작 |
# dictionary 예제
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
print(data) # 출력 : {'사과': 'Apple', '바나나': 'Banana', '코코넛': 'Coconut'}
- 사전 자료형에 특정한 원소 있는지 검사
# 특정 원소 있는지 검사하기
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
if '사과' in data:
print("'사과'를 키로 가지는 데이터가 존재합니다.") # 출력 : '사과'를 키로 가지는 데이터가 존재합니다.
- 사전 자료형 관련 함수
사전 자료형 관련 함수 - keys() : 키 데이터만 뽑아서 리스트로 이용 (함수 자체가 리스트로 뽑힌다) - values() : 값 데이터만 뽑아서 리스트로 이용 (함수 자체가 리스트로 뽑힌다) |
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
# 키 데이터만 담은 리스트
keys_ = data.keys()
print(keys_) # 출력 : dict_keys(['사과', '바나나', '코코넛'])
# 값 데이터만 담은 리스트
values_ = data.values()
print(values_) # 출력 : dict_values(['Apple', 'Banana', 'Coconut'])
6) 집합 자료형
- 집합 자료형 소개
집합 자료형 - 특징 : 중복을 허용하지 않는다, 순서가 없다 - 순서가 없어 인덱싱으로 값을 얻을 수 없다 - 초기화 : set(), {} - 시간복잡도 : O(1) |
+) '학생 번호가 주어졌을때 해당 학생이 선택되었는지 여부를 출력'하는 문제에 효과적으로 사용
+) '특정한 데이터가 이미 등장한 적 있는지 여부 확인' 할때 매우 효과적
# 집합 자료형 초기화_1
data = set([1,1,2,2,3,4,5])
print(data) # 출력 : {1, 2, 3, 4, 5}
# 집합 자료형 초기화_2
data = {1,1,2,2,3,4,5}
print(data) # 출력 : {1, 2, 3, 4, 5}
- 집합 자료형의 연산
집합 자료형의 연산 - 합집합(|), 교집합(&), 차집합(-) |
# 집합 자료형의 연산
a = set([1,2,3,4,5])
b = set([3,4,5,6,7])
# 합집합
print(a|b) # 출력 : {1, 2, 3, 4, 5, 6, 7}
# 교집합
print(a&b) # 출력 : {3, 4, 5}
#차집합
print(a-b) # 출력 : {1, 2}
- 집합 자료형 관련 함수
집합 자료형 관련 함수 - add() : 집합 데이터에 값을 추가 (시간복잡도 : O(1)) - update() : 여러 개의 값을 한꺼번에 추가 - remove() : 특정한 값 제거 (시간복잡도 : O(1)) |
data = set([1,2,3])
print(data)
# 새로운 원소 추가
data.add(4)
print(data) # 출력 : {1, 2, 3, 4}
# 새로운 원소 여러 개 추가
data.update([5,6])
print(data) # 출력 : {1, 2, 3, 4, 5, 6}
# 특정한 값을 갖는 원소 삭제
data.remove(3)
print(data) # 출력 : {1, 2, 4, 5, 6}
이후 문법들은 다음 포스팅에서 정리하겠습니다!
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.18 |
Comments