Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
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 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

bonggyulim 님의 블로그

파이썬 기본 문법 본문

Language & Framework/Python

파이썬 기본 문법

bonggyulim 2026. 3. 19. 19:01

1. 출력과 변수

변수 선언

a = 10
name = "Python"
is_ok = True

파이썬은 자료형을 미리 선언하지 않아도 된다.

출력

print(a)
print(name)
print(a, name)

f-string

문자열 안에 변수를 넣을 때 자주 쓴다.

name = "봉규"
age = 27
print(f"이름은 {name}이고, 나이는 {age}살입니다.")

2. 기본 자료형

2-1. 숫자형

a = 10      # int
b = 3.14    # float

사칙연산:

print(10 + 3)   # 13
print(10 - 3)   # 7
print(10 * 3)   # 30
print(10 / 3)   # 3.333...
print(10 // 3)  # 3   -> 몫
print(10 % 3)   # 1   -> 나머지
print(10 ** 3)  # 1000 -> 거듭제곱

2-2. 문자열

s = "hello"
#   인덱스
#   0 1 2 3 4
#   h e l l o

인덱싱

print(s[0])   # h
print(s[-1])  # o  맨 끝

슬라이싱

# s[start:end:step]
print(s[0:2])  # he		2번 인덱스 전까지
print(s[:3])   # hel	
print(s[2:])   # llo	2번 인덱스부터 끝까지
print(s[::-1]) # olleh

문자열 자주 쓰는 함수

s = " hello python "

print(s.strip())       # 양쪽 공백 제거
print(s.upper())       # 대문자
print(s.lower())       # 소문자
print(s.replace("python", "java"))
print(s.split())       # 공백 기준 분리

문자열 합치기:

arr = ["a", "b", "c"]
print("".join(arr))    # abc

코테에서 join()은 매우 자주 나온다.


2-3. 불리언

flag = True
print(flag)  # True

비교 연산:

print(3 > 1)   # True
print(3 == 1)  # False
print(3 != 1)  # True

논리 연산:

print(True and False)
print(True or False)
print(not True)

3. 리스트

가장 많이 쓰는 자료형이다.

arr = [1, 2, 3, 4, 5]

접근

print(arr[0])
print(arr[-1]) # 뒤에서 부터 셈 -1, -2, -3 ...

추가 / 삭제

arr.append(6)      # 맨 뒤 추가
arr.insert(1, 10)  # 특정 위치에 삽입
arr.pop()          # 마지막 원소 제거
arr.remove(3)      # 값으로 제거

정렬

arr.sort()                  # 오름차순
arr.sort(reverse=True)      # 내림차순

정렬된 새 리스트 반환:

arr = [3, 1, 2]
new_arr = sorted(arr)
print(new_arr)   # [1, 2, 3]

뒤집기

arr.reverse()

개수 세기

arr = [1, 2, 2, 3]
print(arr.count(2))  # 2

리스트 컴프리헨션

코테에서 매우 자주 사용된다.

arr = [i for i in range(5)]
print(arr)  # [0, 1, 2, 3, 4]

조건 포함:

arr = [i for i in range(10) if i % 2 == 0]
print(arr)  # [0, 2, 4, 6, 8]

2차원 배열 생성:

graph = [[0] * 3 for _ in range(4)]

# [
# 	[0, 0, 0],
# 	[0, 0, 0],
# 	[0, 0, 0],
# 	[0, 0, 0]
# ]

주의:

graph = [[0] * 3] * 4

이 방식은 내부 리스트가 같은 객체를 참조해서 문제를 일으킬 수 있다.


4. 튜플

변경할 수 없는 자료형이다.

t = (1, 2, 3)

좌표나 값 묶음으로 많이 사용한다.

x, y = (3, 4)
print(x, y)

5. 딕셔너리

키-값 형태로 저장한다.

d = {"a": 1, "b": 2}
print(d["a"])  # 1

추가 / 수정

d["c"] = 3
d["a"] = 10

삭제

del d["b"]

자주 쓰는 함수

print(d.keys())
print(d.values())
print(d.items())
print(d.get("a"))      # 키가 없으면 None
print(d.get("x", 0))   # 기본값 0

빈도수 세기 패턴

arr = [1, 2, 2, 3, 3, 3]
count = {}

for x in arr:
    count[x] = count.get(x, 0) + 1

print(count)  # {1: 1, 2: 2, 3: 3}

코테에서 매우 중요하다.


6. 집합(set)

중복 제거와 빠른 탐색에 사용한다.

s = {1, 2, 3}

추가 / 삭제

s.add(4)
s.remove(2)

포함 여부 확인

print(3 in s)   # True

중복 제거

arr = [1, 2, 2, 3, 3]
arr = list(set(arr))
print(arr)

7. 조건문

x = 10

if x > 0:
    print("양수")
elif x == 0:
    print("0")
else:
    print("음수")

삼항 연산식:

a = 10
result = "짝수" if a % 2 == 0 else "홀수"
print(result)

8. 반복문

8-1. for문

for i in range(5):
    print(i)

range

range(5)        # 0 ~ 4
range(1, 5)     # 1 ~ 4
range(1, 10, 2) # 1, 3, 5, 7, 9

8-2. while문

i = 0
while i < 5:
    print(i)
    i += 1

8-3. enumerate

인덱스와 값을 같이 사용할 때 편하다.

arr = ["a", "b", "c"]

for idx, value in enumerate(arr):
    print(idx, value)

9. 함수

def add(a, b):
    return a + b

print(add(3, 4))

기본값:

def greet(name="guest"):
    print(f"hello, {name}")

여러 값 반환:

def calc(a, b):
    return a + b, a - b

x, y = calc(10, 3)
print(x, y)

10. 예외 처리

코테에서는 많이 쓰이지 않지만 기본은 알아두면 좋다.

try:
    x = int(input())
except:
    print("숫자를 입력하세요")

11. 코딩테스트 입력 처리

입력이 많을 때는 input()보다 sys.stdin.readline()이 빠르다.

import sys
input = sys.stdin.readline

n = int(input())
arr = list(map(int, input().split()))

문자열 개행 제거:

s = input().strip()

12. 코딩테스트에서 자주 쓰는 내장 함수

12-1. map

입력을 정수로 한 번에 변환할 때 자주 사용한다.

arr = list(map(int, input().split()))

12-2. sum

arr = [1, 2, 3, 4]
print(sum(arr))  # 10

12-3. min, max

arr = [5, 2, 8, 1]
print(min(arr))
print(max(arr))

12-4. sorted

arr = [3, 1, 2]
print(sorted(arr))
print(sorted(arr, reverse=True))

key 사용:

words = ["apple", "kiwi", "banana"]
print(sorted(words, key=len))

튜플 정렬:

arr = [(2, 3), (1, 5), (2, 1)]
print(sorted(arr))                 # 첫 번째 값 기준, 같으면 두 번째 값 기준
print(sorted(arr, key=lambda x: x[1]))

12-5. abs

print(abs(-5))  # 5

12-6. all / any

arr = [True, True, False]
print(all(arr))  # False
print(any(arr))  # True

12-7. zip

여러 리스트를 묶을 때 사용한다.

a = [1, 2, 3]
b = ["a", "b", "c"]

for x, y in zip(a, b):
    print(x, y)

12-8. eval

문자열을 코드처럼 실행해서 위험할 수 있으므로 코테에서는 거의 권장하지 않는다.
알아만 두고 남용하지 않는 것이 좋다.


13. 코딩테스트 필수 라이브러리

13-1. collections

파이썬 코테에서 가장 중요하다고 봐도 된다.

deque

양쪽에서 빠르게 삽입/삭제 가능하다.
BFS에서 거의 필수다.

from collections import deque

q = deque([1, 2, 3])
q.append(4)       # 오른쪽 추가
q.appendleft(0)   # 왼쪽 추가
q.pop()           # 오른쪽 제거
q.popleft()       # 왼쪽 제거

BFS 예시:

from collections import deque

q = deque()
q.append(1)

while q:
    x = q.popleft()
    print(x)

Counter

원소 개수를 자동으로 세어준다.

from collections import Counter

arr = ["a", "b", "a", "c", "a"]
counter = Counter(arr)

print(counter)           # Counter({'a': 3, 'b': 1, 'c': 1})
print(counter["a"])      # 3
print(counter.most_common(1))  # [('a', 3)]

defaultdict

키가 없어도 기본값으로 자동 생성된다.

from collections import defaultdict

d = defaultdict(int)
d["a"] += 1
print(d["a"])  # 1

리스트 기본값:

d = defaultdict(list)
d["x"].append(10)

13-2. itertools

순열, 조합 문제에서 자주 사용한다.

from itertools import permutations, combinations, product

permutations

순열

arr = [1, 2, 3]
print(list(permutations(arr, 2)))

combinations

조합

arr = [1, 2, 3]
print(list(combinations(arr, 2)))

product

중복 순열

arr = [1, 2, 3]
print(list(product(arr, repeat=2)))

13-3. heapq

우선순위 큐를 구현할 때 사용한다.
다익스트라, 최소 힙 문제에서 필수다.

import heapq

heap = []
heapq.heappush(heap, 3)
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)

print(heapq.heappop(heap))  # 1
print(heapq.heappop(heap))  # 2

최소 힙만 기본 지원한다.

최대 힙처럼 사용:

import heapq

heap = []
heapq.heappush(heap, -3)
heapq.heappush(heap, -1)
heapq.heappush(heap, -2)

print(-heapq.heappop(heap))  # 3

13-4. math

수학 관련 문제에서 유용하다.

import math

print(math.sqrt(16))      # 제곱근
print(math.gcd(12, 18))   # 최대공약수
print(math.lcm(12, 18))   # 최소공배수
print(math.factorial(5))  # 팩토리얼
print(math.ceil(3.1))     # 올림
print(math.floor(3.9))    # 내림

13-5. bisect

이진 탐색을 쉽게 구현할 수 있다.

from bisect import bisect_left, bisect_right

arr = [1, 2, 4, 4, 4, 5, 6]

print(bisect_left(arr, 4))   # 2
print(bisect_right(arr, 4))  # 5

개수 구하기:

count = bisect_right(arr, 4) - bisect_left(arr, 4)
print(count)  # 3

14. 자주 나오는 문법 패턴

14-1. 리스트 초기화

visited = [False] * 10
dist = [0] * 10

14-2. 2차원 방향 탐색

DFS/BFS에서 자주 사용한다.

dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

for i in range(4):
    nx = x + dx[i]
    ny = y + dy[i]

14-3. swap

a, b = b, a

14-4. 입력값 여러 개 받기

a, b = map(int, input().split())

14-5. 문자열을 리스트처럼 사용

s = "abcde"
for ch in s:
    print(ch)

14-6. 아스키 코드 변환

print(ord('A'))   # 65
print(chr(65))    # A

문자 변환 문제에서 자주 나온다.