c와 다르게 파이썬은 자료형 선언이 필요없다. 바로 쓰는 형식.
컴퓨터 시스템은 수 데이터를 처리할 때 2진수를 이용하고 실수를 처리할 때 부동 소수점 방식 이용.
오늘날 가장 널리 쓰이는 IEEE754 표준에서 실수형을 저장하기 위해 4바이트 혹은 8바이트라는 고정된 크기 메모리 할당. 이런 이유로 현대 컴퓨터 시스템은 대체로 실수 정보를 표현하는 정확도에 한계를 가짐.
=> 10진수 체계에서는 0.3과 0.6을 더하면 0.9로 딱 떨어지지만 2진수에서는 0.9를 표현할 수 있는 방법이없다. 물론 최대한 0.9와 가깝게 표현하지만 정확히 0.9가 아닌 미세한 오차가 있는 수로 표현된다. (정확히 표현하려면 round함수 이용)
파이썬에서 나누기 연산자(/)는 나눠진 결과를 기본적으로 실수형으로 처리함.
또한 나눈 결과에서 몫만을 얻고자 할 때는 몫 연산자(//)를 이용한다. 이외에도 거듭제곱 연산자 **도 있음.
a=5
b=3
print(a**b) //125
리스트 자료형
리스트는 여러 개의 데이터 연속적으로 담아 처리하기 위해 사용 가능. 파이썬의 리스트 자료형은 C나 자바와 같은 프로그래밍 언어처럼 내부적으로 배열(array) 채택하고 있고 연결 리스트 자료구조 기능을 포함하고 있어서 append(), remove() 등의 메서드를 지원함.
a = [1, 2, 3, 4]
print(a) # [1, 2, 3, 4] 나옴
print(a[3]) #인덱스 3, 4번째 원소인 4가 나옴
# 빈 리스트 만들기
a = list()
print(a) # []
# 빈 리스트 만들기 2
a = []
print(a) # []
n = 10
a = [0] * n
print(a) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 값 0인 원소 10개 가지는 리스트 생성됨
리스트의 인덱싱과 슬라이싱
인덱싱: 인덱스값 입력해서 리스트 특정 원소에 접근하는 것 (인덱스 값은 양의 정수와 음의 정수 모두 가능, 음의 정수는 거꾸로 탐색 할 때 사용한다) ex: print(a[-3]) 이면 a 리스트의 뒤에서 3번째 원소 출력함.
슬라이싱: 리스트에서 연속적인 위치를 갖는 원소들 가져올 때 (ex: print(a[1 : 4]) 하면 인덱스 1에서부터 인덱스 3까지 값 출력됨 = 두 번째 원소부터 네 번째 원소가 출력되는 것. 끝 인덱스 값 미포함!)
리스트 컴프리헨션
리스트 컴프리헨션은 리스트를 초기화하는 방법 중 하나이며 대괄호([])안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있다. 간단히 0부터 19까지의 수 중에서 홀수만 포함하는 리스트를 만들고자 할 때는 다음과 같이 리스트를 초기화할 수 있다. 이 경우 한 줄의 소스코드로 리스트를 초기화할 수 있어 매우 간편!
array = [i for i in range(20) if i % 2 == 1]
print(array) #[1,3,5,7,9,11,13,15,17,19]
리스트 컴프리헨션을 안써도 일반적인 소스코드로 작성할 순 있지만 길어짐!
# N * M 크기의 2차원 리스트 초기화
n = 3
m = 4
array = [[0] * m for _ in range(n)]
print(array)
언더바(_)는 반복을 수행하되 반복을 위한 변수의 값(i같은거) 무시하고자 할 때 자주 사용
참고로 특정 크기의 2차원 리스트를 초기화할 때는 반드시 리스트 컴프리헨션을 사용.
# N * M 크기의 2차원 리스트 초기화(잘못된 방법)
n = 3
m = 4
array = [[0] * m] * n
print(array)
array[1][1] = 5
print(array)
실행 결과를 확인해보면 array[1][1]의 값을 5로 바꾸었을 뿐인데, 3개의 리스트에서 인덱스 1에 해당하는 원소들의 값이 모두 5로 바뀐 것을 확인할 수 있다. 이는 내부적으로 포함된 3개의 리스트가 모두 동일한 객체에 대한 3개의 레퍼런스로 인식되기 때문이다. 따라서 특정한 크기를 가지는 2차원 리스트를 초기화할 때에는 리스트 컴프리헨션을 이용해야한다는 점을 기억!!
리스트 관련 메서드
| 메서드명 | 사용법 | 설명 | 시간복잡도 |
| append() | 변수명.append() | 리스트에 원소 하나 삽입 | O(1) |
| sort() | 변수명.sort / 변수명.sort(reverse = True) | 오름차순 정렬 / 내림차순 정렬 | O(NlogN) |
| reverse() | 변수명.reverse() | 리스트의 원소의 순서를 모두 뒤집음. | O(N) |
| insert() | 변수명.insert(삽입할 인덱스, 삽입할값) | 특정 인덱스에 값 삽입 | O(N) |
| remove() | 변수명.remove(특정 값) | 특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소 여러 개면 하나만 제거 | O(N) |
| count() | 변수명.count(특정 값) | 리스트에서특정한 값을 가지는 데이터의 개수를 셀 때 사용 | O(N) |
파이썬에서는 특정값 원소 모두 제거하고 싶을 때 따로 제거할 set 만들어서 '리스트 컴프리헨션' + 따로 새 리스트에 저장.
문자열 초기화: 큰 따옴표, 작은 따옴표 이용.
'Coding Test' 카테고리의 다른 글
| 코테 독학(feat.이것이 코딩테스트다 with 파이썬) - 그리디 [개념편] (0) | 2026.03.21 |
|---|