입출력과 자료형
입출력 input()
#정수 하나 받기
n = int(input())//정수 하나 받기
#공백으로 구분된 여러 숫자
data = list(map(int, input().split()))
#출력
print(data)
#or
print(f"정답은 {result}입니다")
map(함수, 반복 가능한 객체)
: 두 번째 인자로 들어온 리스트나 튜플의 모든 요소에 첫 번째 인자로 넣은 함수를 일괄 적용해 주는 함수
input().split()을 하면 결과는 항상 문자열 리스트가 됨
(예: ["1", "2", "3"])
계산을 할 때 정수(int)가 필요하므로 이때 map을 써서 한꺼번에 형변환
strip()
: 문자열의 양 끝에 있는 공백, 탭, 줄바꿈 문자를 모두 지워줌
- map(int, input().split()) -> strip() 안 써도 됨
- input().split() -> strip() 안 써도 됨
- sys.stdin.readline() -> strip()을 습관적으로 붙이는 것이 좋음
- 작동 원리
map(int, ["1", "2", "3"])
- "1"을 꺼내서 int("1") 실행 → 1
- "2"를 꺼내서 int("2") 실행 → 2
- "3"을 꺼내서 int("3") 실행 → 3
- 이 결과들을 묶어서 돌려줌
주요 자료형
#리스트 (List): 데이터를 순서대로 저장
arr = [1,2,3]
arr.append(4) #추가
arr.pop() #마지막 요소 제거
#튜플 (Tuple): 데이터를 고정된 상태로 저장
t = (1, 2, 3)
# t.append(4) -> 에러 발생 (추가 불가)
# t.pop() -> 에러 발생 (제거 불가)
# t[0] = 10 -> 에러 발생 (수정 불가)
# 단, 조회나 슬라이싱은 가능
print(t[0]) # 1
print(t[1:3]) # (2, 3)
#딕셔너리 (Dictionary): Key-Value 쌍으로 저장 - 검색 속도 매우 빠름
m = {"apple":5, "banana": 3}
#집합 (Set): 중복을 허용하지 않음. 중복 제거 시 유용
s = set([1, 2, 2, 3])
#-> {1, 2, 3}
제어문 (조건문과 반복문)
조건문 (if, elif, else)
score = 85
if score >= 90:
print("A")
elif score >= 80:
print("B")
else:
print("C")
반복문 (for, while)
알고리즘 문제에서 가장 많이 쓰는 것은 for문과 range()의 조합
- 기본 루프: range(시작, 끝+1)
for i in range(1, 6): # 1부터 5까지 반복
print(i)
- 리스트 순회
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 인덱스와 값을 동시에 (enumerate): 발표할 때 "몇 번째 요소가 무엇이다"라고 설명하기 좋음
for idx, val in enumerate(fruits):
print(f"{idx}번 과일은 {val}입니다.")
''' 3. 리스트 컴프리헨션 (List Comprehension) ★중요
반복문을 한 줄로 줄여 리스트를 만듦, 시간 단축에 매우 유리'''
# 일반 코드:
arr = []
for i in range(5):
arr.append(i * 2)
# 컴프리헨션:
arr = [i * 2 for i in range(5)] # [0, 2, 4, 6, 8]
필수 내장 함수 & 라이브러리
자주 쓰는 내장 함수
별도의 import 없이 바로 쓸 수 있음
- sum(arr): 리스트의 모든 요소 합계
- min(arr), max(arr): 최솟값, 최댓값 찾기
- sorted(arr): 리스트 정렬 (오름차순이 기본, reverse=True면 내림차순)
- len(arr): 리스트나 문자열의 길이
정렬(Sort)
arr = [3, 1, 4, 1, 5]
arr.sort() # 원본 리스트를 바로 정렬
new_arr = sorted(arr) # 정렬된 새로운 리스트를 반환
필수 라이브러리
- collections.deque(큐/덱)
리스트의 pop(0)은 느리지만, deque의 popleft()는 매우 빠름
BFS 알고리즘의 필수품
from collections import deque
queue = deque([1, 2, 3])
queue.append(4)
queue.popleft() # 1을 제거
- itertools (순열과 조합)
"중복 없이 3개를 뽑는 경우의 수" 같은 문제를 풀 때 직접 구현할 필요가 없음
from itertools import permutations, combinations
data = ['A', 'B', 'C']
print(list(combinations(data, 2))) # [('A', 'B'), ('A', 'C'), ('B', 'C')]
'''
math (수학):
최대공약수(gcd)나 팩토리얼 등을 구할 때 씁니다.
import math
print(math.gcd(21, 14)) # 7
'''
슬라이싱 & 문자열 메서드
슬라이싱
리스트나 문자열의 일부분을 [시작:끝:증감] 형식으로 잘라내는 기능
- arr[1:4]: 인덱스 1부터 3까지 가져옴
- arr[:3]: 처음부터 인덱스 2까지 가져옴
- arr[2:]: 인덱스 2부터 끝까지 가져옴
- arr[::-1]: 리스트나 문자열을 통째로 뒤집음
문자열 메서드
- .split(): 문자열을 공백이나 특정 문자로 나눔
- "".join(list): 리스트에 담긴 문자열들을 하나로 합침 (예: "-".join(['010', '1234', '5678']) → "010-1234-5678")
- .replace("A", "B"): A를 B로 바꿈
- .upper(), .lower(): 대소문자 변환
함수 정의(def)
# 함수 정의
def add_numbers(a, b):
result = a + b
return result
# 함수 호출
print(add_numbers(3, 5)) # 8'Python' 카테고리의 다른 글
| 알고리즘 (0) | 2026.06.30 |
|---|---|
| Python 복습(2) (0) | 2026.05.14 |
| Python - list (0) | 2026.05.14 |