오늘 배운 핵심
프로그래머스 DAY 2에서는 파이썬 문자열을 다루는 가장 기본적인 감각을 익혔다. 핵심은 세 가지다. 변수에 담긴 값을 출력하는 법, 문자열을 한 글자씩 꺼내는 법, 그리고 원하는 구간만 자르는 슬라이싱이다.
- print(text): 변수 text 안에 들어 있는 값을 출력한다.
- print("text"): 변수 값이 아니라 text라는 글자 자체를 출력한다.
- print(f"{text}"): 결과는 같을 수 있지만, 단순 출력 문제에서는 굳이 필요하지 않다.
독자 팁
예제에서는 str보다 text, letter처럼 의미가 보이는 변수명을 쓰면 코드를 훨씬 쉽게 읽을 수 있다. str은 파이썬의 내장 이름이기도 해서 학습용 코드에서는 피하는 편이 좋다.
1. print(text)와 print("text")의 차이
처음 헷갈리기 쉬운 부분은 따옴표의 의미다. 따옴표를 붙이면 파이썬은 그것을 변수로 보지 않고, 그대로 출력해야 하는 문자열로 본다.
코드 의미 언제 쓰나
| print(text) | 변수에 담긴 값을 출력 | 입력값이나 계산 결과를 보여줄 때 |
| print("text") | text라는 글자 자체를 출력 | 고정 문장을 보여줄 때 |
| print(f"{text}") | f-string으로 변수 값을 문자열에 삽입 | 문장 안에 값을 섞어 출력할 때 |
text = input()
print(text)
입력받은 내용을 그대로 출력하는 문제라면 위처럼 쓰는 것이 가장 단순하고 읽기 좋다.
2. 문자열을 한 글자씩 출력하는 방법
문자열은 글자들이 순서대로 모여 있는 자료형이다. 그래서 인덱스로 접근할 수도 있고, 반복문으로 글자를 바로 꺼낼 수도 있다.
방법 1: 인덱스로 접근하기
text = input()
for i in range(len(text)):
print(text[i])
이 방식은 글자의 위치, 즉 인덱스가 필요할 때 유용하다. 예를 들어 몇 번째 글자인지 함께 확인해야 한다면 이 구조가 도움이 된다.
방법 2: 글자를 직접 꺼내기
text = input()
for letter in text:
print(letter)
글자 자체만 필요하다면 이 방식이 더 직관적이다. for letter in text는 “문자열에서 글자를 하나씩 꺼내겠다”는 뜻이 바로 보인다.
정리
인덱스가 필요하면 range(len(text)), 글자만 필요하면 for letter in text를 쓰면 된다.
3. 슬라이싱의 기본 공식
슬라이싱은 문자열에서 원하는 범위만 잘라내는 문법이다. 기본 모양은 아래와 같다.
text[start:end:step]
- start: 시작 인덱스
- end: 끝 인덱스. 단, 이 위치는 포함되지 않는다.
- step: 몇 칸씩 이동할지 정하는 값
가장 중요한 규칙은 end는 포함하지 않는다는 점이다. 즉 text[2:5]는 2번, 3번, 4번 인덱스까지만 가져온다.
text = "ABCDEFGHIJ"
print(text[2:5]) # CDE
print(text[:3]) # ABC
print(text[3:]) # DEFGHIJ
print(text[::2]) # ACEGI
print(text[::-1]) # JIHGFEDCBA
4. 코딩테스트에서 기억할 포인트
- 문자열을 그대로 출력해야 하면 print(text)를 먼저 떠올린다.
- 한 글자씩 처리해야 하면 for letter in text가 가장 읽기 쉽다.
- 위치 정보가 함께 필요하면 range(len(text)) 또는 enumerate(text)를 사용한다.
- 슬라이싱에서는 끝 인덱스가 포함되지 않는다는 규칙을 꼭 기억한다.
마무리
DAY 2의 내용은 어렵다기보다 “문자열을 어떻게 읽고 자를 것인가”에 익숙해지는 단계였다. 작은 문법 하나를 정확히 구분해두면, 이후 문자열 문제에서 훨씬 빠르게 풀이 방향을 잡을 수 있다.
다음에 비슷한 문제를 만나면 먼저 이렇게 생각해보자. 그대로 출력할 것인가, 한 글자씩 볼 것인가, 아니면 일부만 잘라낼 것인가? 이 질문만 잡아도 문자열 문제의 절반은 이미 정리된다.