이 게시글은 CS(컴퓨터공학) 프로그래밍 기초를 어느 정도 알고 있다고 가정하고 아주 간단하게 설명하는 게시글입니다.
혹시나 모르는 부분이 있으면 댓글로 질문해주세요.
1. 입출력
import sys
# 최적화를 위해 이 코드를 추가합니다.
input = sys.stdin.readline
# 입력은 input()으로 받습니다.
# 이 때 위에 있는 코드에 의해 개행 문자('\n')까지 입력되니 rstrip()으로 맨 오른쪽 문자('\n')를 제거합니다.
S:str = input().rstrip()
# 출력은 print()로 터미널에 표시합니다.
print(S)
2. 사칙연산
# 피연산자 정의
a:int = 10
b:int = 3
# 1. 기본 사칙연산
print(a + b) # 13 (더하기)
print(a - b) # 7 (빼기)
print(a * b) # 30 (곱하기)
print(a / b) # 3.3333... (나누기 : 결과는 항상 '실수형(float)' 반환됩니다. 이 점 유의해주세요!)
# 2. 알고리즘/정수론 필수 연산
print(a // b) # 3 (몫 연산자 : 소수점 아래를 버림)
print(a % b) # 1 (나머지 연산자)
# 3. 거듭제곱
print(a ** b) # 1000 (a의 b제곱, 10^3)
3. 조건문(if, elif, else)
# 변수 설정
a:int = 3
# 조건문(if-elif-else)을 활용한 양수, 음수, 0 판별
if a > 0 :
print("양수")
elif a < 0 :
print("음수")
else :
print("0")
4. 반복문(for문, while문)
# 1. for문 (별 찍기)
# range(1, 6, 1)은 1부터 5까지 1씩 더해서 반복합니다. 파이썬은 문자열 곱셈이 가능합니다.
for i in range(1, 6, 1) :
print("*" * i)
print("-" * 20) # 구분선
# 2. while문 (누적 합 및 감소)
number:int = 5
S:int = 0
# 파이썬에서는 0이 아닌 숫자는 True, 0은 False로 취급하므로 while(number) 형식이 가능합니다.
while number:
S += number
number -= 1
print(f"최종 합계 S : {S}") # 출력: 15
print(f"최종 number : {number}") # 출력: 0
5. 기초 자료형(정수, 실수, 문자열, 논리형)
# 1. 정수형 (int)
num:int = 10
# [Python의 장점]
# C++과 달리 파이썬은 정수형 오버플로우(Overflow)가 발생하지 않습니다.
# 정수 연산 범위를 넘어가도 내부적으로 자동으로 메모리를 더 할당하기 때문에,
# 아무리 큰 숫자가 들어와도 범위 초과 걱정 없이 연산할 수 있습니다.
huge_num:int = 1234567890123456789012345678901234567890
print(huge_num * num) # 결과 : 12345678901234567890123456789012345678900
# 2. 실수형 (float)
pi:float = 3.14
radius:int = 5
area:float = 2 * pi * radius
print(area) # 결과 : 31.400000000000002
# 3. 문자열 (str)
text:str = "EE_Engineering"
print(text)
# 참고로 문자열은 인덱스 범위를 지정하여 일부분만 출력할 수 있습니다.
print(text[0:2:1]) # 결과 : EE
# 4. 논리형 (bool)
status1:bool = True
status2:bool = False
print(status1 and status2) # 결과 : False
print(status1 or status2) # 결과 : True
print(not status1) # 결과 : False
6. 리스트(ArrayList) 자료구조
# 1. 1차원 리스트 (C++의 1차원 배열 대응)
# 선언 및 초기화
arr1d:list[int] = [10, 20, 30, 40, 50]
# 인덱스 접근 (0부터 시작)
print(arr1d[0]) # 10
print(arr1d[2]) # 30
# 2. 2차원 리스트 (C++의 2차원 배열 대응)
# 선언 및 초기화 (가독성을 위해 행렬 형태로 배치)
arr2d:list[list[int]] = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 인덱스 접근: [행][열] (Row, Column 순서)
print(arr2d[0][0]) # 1 (0행 0열)
print(arr2d[1][2]) # 6 (1행 2열)
# [팁] 알고리즘 풀이용 N x M 크기의 0으로 초기화된 2차원 리스트 생성법
N, M = 3, 4
matrix:list[list[int]] = [[0] * M for _ in range(N)]
7. 그 외 자료형(set, tuple, dict)
# 1. 튜플 (tuple)
# 변경 불가능(Immutable)한 순서가 있는 자료구조입니다.
# 알고리즘 풀이에서 그래프의 좌표 (x, y)나 가중치 데이터 등을 묶어서 관리할 때 자주 사용합니다.
point:tuple[int, int] = (3, 5)
print(point[0]) # 3
# 2. 집합 (set)
# 중복을 허용하지 않고 순서가 없는 자료구조입니다.
# 해시 테이블 기반이라 데이터 존재 여부 확인(in 연산자)이 O(1)로 매우 빠르며, 중복 제거에 필수적입니다.
s:set[int] = {1, 2, 2, 3, 3, 3}
print(s) # {1, 2, 3} (중복이 자동으로 제거됨)
# 값 포함 여부 확인 (O(1))
print(2 in s) # True
# 3. 딕셔너리 (dict)
# Key-Value(키-값) 쌍으로 데이터를 저장하는 자료구조입니다.
# C++의 unordered_map과 대응되며, 특정 Key를 통한 탐색 및 접근 속도가 O(1)입니다.
graph_weight:dict[str, int] = {"A": 10, "B": 20}
print(graph_weight["A"]) # 10
# 새로운 키-값 추가 및 수정
graph_weight["C"] = 30
'초간단 알고리즘 설명' 카테고리의 다른 글
| [알고리즘 설명][Python] 유클리드 호제법(euclidean algorithm) (0) | 2026.06.15 |
|---|---|
| [알고리즘 설명][Python] 해싱(hashing) (0) | 2026.06.14 |
| [알고리즘 설명][Python] 브루트 포스 알고리즘(brute force) (0) | 2026.06.12 |
| [알고리즘 설명][Python] 소수 판정(prime test) (0) | 2026.06.11 |
| [알고리즘 설명][Python] 피타고라스 정리(pythagoras' theorem) (0) | 2026.06.10 |