🧩 1️⃣ 문자열 기본 문법

가장 기본적이지만 코테에서 자주 쓰입니다.

주제 핵심 문법 / 예제
문자열 슬라이싱 s[1:4], s[::-1] (뒤집기), s[-1]
문자열 합치기 ''.join(list), ' '.join(words)
문자열 분리 s.split(), s.split(',')
문자 세기 s.count('a'), collections.Counter(s)
문자열 정렬 sorted(s), ''.join(sorted(s, reverse=True))
대소문자 변환 s.upper(), s.lower(), s.swapcase()
문자 확인 s.isdigit(), s.isalpha(), s.isalnum(), s.isspace()
문자열 찾기 s.find('abc'), s.index('abc'), 'abc' in s
문자열 포맷 f"{변수}", "{} {}".format(a, b)

📚 2️⃣ 문자열 파싱 (Parsing)

파싱 문제는 입력에서 필요한 정보만 추출하는 문제입니다.

보통 구분자(split), 정규식(re), 슬라이싱이 핵심이에요.

✅ 기본 예제들

🔹 구분자 파싱

data = "name:John,age:30,city:Seoul"
info = {k: v for k, v in [x.split(':') for x in data.split(',')]}
print(info)  # {'name': 'John', 'age': '30', 'city': 'Seoul'}

🔹 숫자만 추출

s = "abc123def456"
numbers = ''.join(ch for ch in s if ch.isdigit())
print(numbers)  # '123456'

🔹 정규식으로 추출

import re
text = "Order#1234: price=5600KRW"
num = re.findall(r'\\d+', text)
print(num)  # ['1234', '5600']

🔹 괄호 안 문자 추출

import re
s = "foo(bar)baz(qux)"
res = re.findall(r'\\((.*?)\\)', s)
print(res)  # ['bar', 'qux']


🧠 3️⃣ 문자열 알고리즘 문제 유형

코테에서는 단순 파싱보다 로직과 결합된 문자열 처리가 자주 나옵니다.

유형 설명 예시
회문 검사 앞뒤 대칭 확인 s == s[::-1]
아나그램 정렬해서 비교 sorted(s1) == sorted(s2)
중복 제거 ''.join(dict.fromkeys(s))
압축 같은 문자 연속 개수 세기 aabb → a2b2
패턴 매칭 부분 문자열 탐색 (KMP, 슬라이딩 윈도우) "abc" in s
단어 빈도 Counter 활용 Counter(s.split())
유효한 괄호 스택으로 구현 '()[]{}' 검사
문자열 뒤집기 s[::-1] or 부분 단위 reverse
Caesar cipher chr((ord(ch)-97+k)%26+97)