Python 문자열 슬라이싱과 % 포맷 결합 문제 풀이(Claude)

2026. 7. 11. 15:46파이썬

📌 문제

다음 Python으로 구현된 프로그램을 분석하여 알맞는 출력 결과를 작성하시오.

a = "REMEMBER NOVEMBER"
b = a[0:3] + a[12:16]
c = "R AND %s" % "STR"
print(b + c)

단계별 실행

1행 — a의 인덱스 확인

인덱스: 0  1  2  3  4  5  6  7  8    9  10 11 12 13 14 15 16 17
문자:   R  E  M  E  M  B  E  R  ' '  N  O  V  E  M  B  E  R

2행 — b = a[0:3] + a[12:16]

a[0:3] → 0, 1, 2번 인덱스 (3번은 포함 안 됨)

0:R, 1:E, 2:M → "REM"

a[12:16] → 12, 13, 14, 15번 인덱스 (16번은 포함 안 됨)

12:E, 13:M, 14:B, 15:E → "EMBE"
b = "REM" + "EMBE" = "REMEMBE"

3행 — c = "R AND %s" % "STR"

%s는 문자열로 치환되는 자리입니다.

c = "R AND STR"

4행 — print(b + c)

"REMEMBE" + "R AND STR"

b의 끝("REMEMBE")과 c의 시작("R AND STR")이 이어지면서, 마치 원래 단어 "REMEMBER"처럼 보이는 부분이 만들어집니다.

REMEMBE + R AND STR = REMEMBER AND STR

✅ 최종 실행 결과

REMEMBER AND STR

⚠️ 함정 포인트

  1. a[0:3]은 3번 인덱스를 포함하지 않음 — "REM"이지 "REME"가 아닙니다. 슬라이싱의 종료 인덱스는 항상 "그 앞까지"입니다.
  2. b는 "REMEMBE"로, R이 하나 빠진 상태 — 이게 c의 첫 글자 "R"과 자연스럽게 이어지면서 마치 원래 단어처럼 보이는 게 이 문제의 함정입니다.
  3. %s는 값을 문자열 그대로 삽입 — 숫자든 문자열이든 %s는 str()로 바꾼 것처럼 그대로 끼워 넣습니다.
  4. b + c는 단순 문자열 결합(concatenation) — 공백이 자동으로 들어가지 않으므로, 정확히 글자 그대로 붙습니다.

🎯 핵심 개념 정리

문자열 슬라이싱

문자열[시작:종료]

종료 인덱스는 포함되지 않습니다.

"REMEMBER"[0:3]   # "REM"

문자열 이어붙이기 (+)

"abc" + "def"
# → "abcdef"

% 포맷 연산자

"%s" % 값

%s는 값을 문자열로 변환해 그 자리에 넣습니다.

"Hello, %s!" % "World"
# → "Hello, World!"

✍️ 시험 답안용 한 줄 풀이

a[0:3]은 "REM", a[12:16]은 "EMBE"이므로 b는 "REMEMBE"이다. c는 %s 자리에 "STR"이 들어간 "R AND STR"이다. 이 둘을 이어붙이면 b의 끝과 c의 시작이 자연스럽게 연결되어 "REMEMBER AND STR"이 출력된다.


🧠 미니 퀴즈

  1. a[12:16]을 a[12:17]로 바꾸면 b는 어떻게 바뀔까요?
  2. c = "R AND %s" % "STR"을 c = "%s AND R" % "STR"로 바꾸면 print(b + c)의 결과는?
  3. a[0:3]을 a[0:4]로 바꾸면 최종 결과는 어떻게 바뀔까요?

정답

  1. a[12:17]은 인덱스 12~16번 → "EMBER"이므로 b = "REM" + "EMBER" = "REMEMBER"가 됩니다.
  2. c = "STR AND R"이 되므로, print(b + c) = "REMEMBE" + "STR AND R" = "REMEMBESTR AND R"
  3. a[0:4]는 "REME"이므로 b = "REME" + "EMBE" = "REMEEMBE", 최종 결과는 "REMEEMBER AND STR"