Python 클래스 변수와 반복문 문제 풀이(Claude)

2026. 7. 11. 10:44파이썬

📌 문제

다음 python의 프로그램을 분석하여 실행 결과에 대해 작성하시오.

class charClass :
    a = ["Seoul", "Inchon", "Kyonggi", "Daejun", "Daegu", "Pusan"]
myVal = charClass()
str01 = ''
for i in myVal.a:
    str01 = str01 + i[0]
print(str01)

단계별 실행

1~2행 — 클래스 정의

class charClass:
    a = ["Seoul", "Inchon", "Kyonggi", "Daejun", "Daegu", "Pusan"]

a는 클래스 변수로, 문자열 6개가 담긴 리스트입니다.

3행 — 인스턴스 생성

myVal = charClass()

myVal.a로 클래스 변수 a에 접근할 수 있습니다.

4행 — str01 초기화

str01 = ''

5~6행 — 반복문

for i in myVal.a:
    str01 = str01 + i[0]

각 도시 이름의 **첫 글자(인덱스 0)**를 하나씩 뽑아서 str01에 이어붙입니다.

순서 i i[0] 누적 str01

1 "Seoul" S S
2 "Inchon" I SI
3 "Kyonggi" K SIK
4 "Daejun" D SIKD
5 "Daegu" D SIKDD
6 "Pusan" P SIKDDP

7행 — 출력

print(str01)

✅ 최종 실행 결과

SIKDDP

⚠️ 함정 포인트

  1. 클래스 변수는 인스턴스에서 그대로 접근 가능 — myVal.a는 charClass.a와 같은 리스트를 가리킵니다.
  2. i[0]은 문자열의 첫 글자 — 리스트의 각 원소(문자열)에서 인덱스 0번 문자를 꺼냅니다.
  3. 문자열 이어붙이기(+= 방식) — 반복마다 새 문자열이 만들어져 str01에 계속 누적됩니다.
  4. "Daejun"과 "Daegu"는 첫 글자가 같음(D) — 결과에 D가 두 번 연속으로 나오는 이유입니다.

🎯 핵심 개념 정리

클래스 변수

클래스 안에서 정의된 변수는 모든 인스턴스가 공유합니다.

class Dog:
    species = "canine"

d = Dog()
print(d.species)  # "canine"

문자열 인덱싱

"Seoul"[0]
# → "S"

리스트를 순회하는 for 문

for i in ["a", "b", "c"]:
    print(i)
# a
# b
# c

문자열 누적(+=)

파이썬 문자열은 불변(immutable)이라 +로 이어붙일 때마다 새 문자열이 생성됩니다.

result = ''
for ch in "abc":
    result = result + ch
# result → "abc"

✍️ 시험 답안용 한 줄 풀이

myVal.a는 6개의 도시 이름이 담긴 리스트이며, for 문으로 각 문자열의 첫 글자(i[0])를 하나씩 뽑아 str01에 이어붙인다. Seoul→S, Inchon→I, Kyonggi→K, Daejun→D, Daegu→D, Pusan→P를 순서대로 이어붙이므로 최종 결과는 SIKDDP이다.


🧠 미니 퀴즈

  1. i[0] 대신 i[-1](마지막 글자)을 사용하면 결과는 어떻게 될까요?
  2. 리스트에 "Ulsan"을 마지막에 추가하면 결과 문자열은 어떻게 바뀔까요?
  3. str01 = str01 + i[0]을 str01 += i[0:2]로 바꾸면 결과는?

정답

  1. "lnijuun" — 각 단어의 마지막 글자: Seoul→l, Inchon→n, Kyonggi→i, Daejun→n, Daegu→u, Pusan→n
  2. "SIKDDPU" — 끝에 U(Ulsan의 첫 글자)가 추가됨
  3. "SeInKyDaDaPu" — 각 단어의 앞 두 글자씩 이어붙임