본문 바로가기
Study☆/Computer Science

[Python] 코딩 테스트를 위한 파이썬 기본 문법 (자료형, 조건문)

by JJORIO 2021. 3. 15.
728x90
반응형

코딩 테스트를 위한 파이썬 기본 문법

공채 시즌이 다시금 가까워졌다.

코딩 테스트 대비를 한동안 안 해서 코딩 감각이 무뎌진 느낌이라 기본적인 문법을 되돌아 보기로 하였다.

 

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

728x90
반응형