코딩 테스트를 위한 파이썬 기본 문법
공채 시즌이 다시금 가까워졌다.
코딩 테스트 대비를 한동안 안 해서 코딩 감각이 무뎌진 느낌이라 기본적인 문법을 되돌아 보기로 하였다.
1. 자료형
정수형
a = 1000
print(a)
a = -7
print(a)
a = 0
print(a)
양의 정수, 음의 정수, 0 에 대한 입력과 출력
1000
-7
0
실수형
a = 157.93
print(a)
a = -1837.2
print(a)
a = 5.
print(a)
a = - .7
print(a)
양의 실수와 음의 실수의 입력과 출력
157.93
-1837.2
5.0
-0.7
출력 결과에서 볼 수 있듯이 소수부가 0이거나 정수부가 0인 소수는 0을 생략하고 작성할 수 있다.
a = 1e9
print(a)
a = 75.25e1
print(a)
a = 3954e-3
print(a)
실수형 데이터에서 e를 활용하는데 e 다음에 오는 수는 10의 지수부를 의미한다.
1000000000.0
752.5
3.954
수 자료형의 연산
a = 7
b = 3
print(a / b)
print(a % b)
print(a // b)
print(a ** b)
2.333333333333335
1
2
343
/ 는 나누기, % 는 나머지 구하기, // 는 몫 구하기, ** 는 거듭제곱을 의미한다.
리스트 자료형
리스트는 C나 자바와 같은 프로그래밍 언어의 배열 기능을 포함하고 있으며 C++ 의 STL Vector 와 유사하다.
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a)
print(a[4])
a = list()
print(a)
a = []
print(a)
전체적으로 배열과 유사한 선언 방식이다. 원소 접근 방법도 비슷하다.
출력 값 ↓
[1, 2, 3, 4, 5, 6, 7, 8, 9]
5
[]
[]
크기가 N이고, 모든 값이 0인 1차원 리스트를 초기화하는 방법
n = 10
a = [0] * n
print(a)
>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
리스트의 인덱싱과 슬라이싱하는 방법을 알아보자
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[-1])
print(a[-3])
a[3] = 7
print(a)
인덱스값이 음수일 경우 뒤에서 n번째 원소를 인덱싱한다.
9
7
[1, 2, 3, 7, 5, 6, 7, 8, 9]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[1 : 4])
>> [2, 3, 4]
슬라이싱( : ) 은 n 에서 m까지의 리스트 값을 가져오고 싶을 때 사용한다.
리스트를 초기화하는 방법에 대해서 살펴보자.
array = [i for i in range(20) if i % 2 == 1]
print(array)
>> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
위같이 초기화한 방법은 사실 일반적으로 아래와 같이 작성한 것과 같다.
array = []
for i in range(20):
if i % 2 == 1 :
array.append(i)
print(array)
4줄의 코드가 1줄로 줄었으므로 훨씬 간단하게 할 수 있다.
1부터 9까지 제곱 값을 포함하는 리스트는 아래처럼 작성할 수 있다.
array = [i * i for i in range(1, 10)]
print(a)
>> [1, 4, 9, 16, 25, 36, 49, 64, 81]
그리고 이러한 표현을 이용해서 N X M 크기의 2차원 배열을 초기화할 수 있다.
n = 3
m = 4
array = [[0] * m for _ in range(n)]
print(a)
>> [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
여기서 _ (언더바)는 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 사용한다.
리스트 관련 메서드
append() | 변수명.append() | 리스트에 원소를 하나 삽입할 때 사용 | O(1) |
sort() | 변수명.sort() | 기본 정렬 기능으로 오름차순으로 정렬 | O(NlogN) |
변수명.sort(reverse = Ture) | 내림차순으로 정렬한다. | ||
reverse() | 변수명.reverse() | 리스트의 원소의 순서를 모두 뒤집어 놓는다. | O(N) |
insert() | 변수명.insert(삽입할 위치 인덱스, 삽입할 값) | 특정한 인덱스 위치에 원소를 삽입할 때 사용한다. | O(N) |
count() | 변수명.count(특정 값) | 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용한다. | O(N) |
remove() | 변수명.remove(특정 값) | 특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러 개면 하나만 제거한다. | O(N) |
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
result = [i for i in a if i not in remove_set]
print(result)
>> [1, 2, 4]
-> remove_set 에 있는 숫자를 제거하였다.
문자열 자료형
문자열 변수를 초기화할 때는 일반적으로 큰따옴표(")나 작은따옴표(')를 사용한다.
data = 'Hello World'
print(data)
>> Hello World
문자열은 연산기호로 연산이 가능한데 예시를 살펴보자
a = "Hello"
b = "World"
print(a + " " + b)
>> Hello World
+ 는 문자열이 이어지게 한다.
a = "String"
print(a * 3)
>> StringStringString
* 는 문자열을 그 값만큼 문자열을 더한다.
그리고 문자열은 내부적으로 리스트와 같이 처리되는데
a = "ABCDEF"
print(a[2 : 4])
>> CD
리스트처럼 원하는 인덱스의 문자를 출력할 수 있다.
튜플 자료형
튜플 자료형은 리스트와 비슷한데 몇 가지 차이점이 있다.
- 튜플은 한 번 선언된 값을 변경할 수 없다.
- 리스트는 대괄호([])를 이용하지만, 튜플은 소괄호(())를 이용한다.
예시를 살펴보자
a = (1, 2, 3, 4)
print(a)
>> (1, 2, 3, 4)
튜플은 대입 연산사(=)를 통해서 변경이 안 되므로 주의할 필요가 있는데, 오히려 이런 변경이 안 된다는 점을 통해서 알고리즘을 구현할 수 있는 면도 있다.
사전 자료형
키 - 값 쌍으로 구성되어 있는 데이터를 담아야할 때 사용하는 자료형이다.
키 (Key) | 값 (Value) |
사과 | Apple |
바나나 | Banana |
코코넛 | Coconut |
이것을 사전 자료형으로 초기화해보자
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("False")
>> False
집합 자료형
집합(Set) 은 "중복을 허용하지 않고" "순서가 없는" 특징을 가지고 있다. 초기화 방법부터 알아보자
data = set([1, 1, 2, 3, 4, 4, 5])
print(data)
>> {1, 2, 3, 4, 5}
data = {1, 1, 2, 3, 4, 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)
print(a & b)
print(a - b)
순서대로 합집합, 교집합, 차집합을 가리키는 연산자이다.
결과를 보자
{1, 2, 3, 4, 5, 6, 7}
{3, 4, 5}
{1, 2}
data = set([1, 2, 3])
printa(data)
data.add(4)
print(data)
data.update([5, 6])
print(data)
data.remove(3)
print(data)
add() 는 하나의 값을 집합에 넣을 때, update는 여러개의 원소를 집합에 넣을 때 사용한다. remove()는 특정한 값을 지울때 사용한다.
결과값은 다음과 같다.
{1, 2, 3}
{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6}
{1, 2, 4, 5, 6}
2. 조건문
조건문은 프로그램을 작성할 때 흐름을 제어하는 문법이다. 알고리즘 문제를 해결하는데에는 절대로 빠트릴 수 없는 요소이므로 꼭 숙지해야한다고 생각한다.
가장 기본적인 조건문은 if ~ elif ~ else 문이다.
if 조건문 1 :
조건문 1이 True일 때 실행되는 코드
elif 조건문 2 :
조건문 1에 해당하지 않고, 조건문 2가 True일 때 실행되는 코드
else :
위의 모든 조건문이 모두 True 값이 아닐 때 실행되는 코드
기본적인 문법이다. 사용 예시를 살펴보자.
score = 85
if score >= 90:
print("학점: A")
elif score >= 80:
print("학점: B")
elif score >= 70:
print("학점: C")
else:
print("학점: F")
>> 학점: B
조건문에서는 들여쓰기가 중요한데 스페이스 바를 4번 입력하여 작성한다.
비교 연산자
비교 연산자 | 설명 |
X == Y | X와 Y가 서로 같을 때 참(True)이다. |
X != Y | X와 Y가 서로 다를 때 참(True)이다. |
X > Y | X와 Y보다 클 때 참(True)이다. |
X < Y | X가 Y보다 작을 때 참(True)이다. |
X >= Y | X가 Y보다 크거나 같을 때 참(True)이다. |
X <= Y | X가 Y보다 작거나 같을 때 참(True)이다. |
논리 연산자
논리 연산자 | 설명 |
X and Y | X와 Y가 모두 참(True)일 때 참(True) |
X or Y | X와 Y 중에 하나만 참(True)이어도 참(True)이다. |
not X | X가 거짓(False)일 때 참(True)이다. |
파이썬의 기타 연산자
파이썬은 추가적으로 'in' 연산자와 'not in' 연산자를 제공한다.
in 연산자와 not in 연산자 | 설명 |
X in 리스트 | 리스트 안에 X가 들어가 있을 때 참(True)이다. |
X not in 문자열 | 문자열 안에 X가 들어가 있지 않을 때 참(True)이다. |
각 조건문의 예시를 살펴보자
score = 85
if score >= 80 :
result = "Success"
else :
result = "Fail"
>> Success
비교연산자에 대한 예시
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
result = [i for i in a if i not in remove_set]
>> [1, 2, 4]
in 과 if를 활용해서 line을 줄인 모습.
가장 기본적인 문법인 자료형과 조건문에 대해서 알아보았습니다.
이것을 기본으로 깔아놓고 다음 문법에 대해서 알아볼까 합니다.
Written by Sheart
'Study☆ > Computer Science' 카테고리의 다른 글
정보처리기사 2020년 실기 2회 기출문제 (0) | 2021.04.20 |
---|---|
정보처리기사 2020년 실기 1회 기출문제 (0) | 2021.04.13 |
[네트워크] 전송매체 유형 및 커넥터 (0) | 2021.03.06 |
[네트워크] 전송기법 기초 (0) | 2021.02.17 |
[네트워크] 네트워킹 표준 (0) | 2021.02.07 |