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
⚠️ 함정 포인트
- 클래스 변수는 인스턴스에서 그대로 접근 가능 — myVal.a는 charClass.a와 같은 리스트를 가리킵니다.
- i[0]은 문자열의 첫 글자 — 리스트의 각 원소(문자열)에서 인덱스 0번 문자를 꺼냅니다.
- 문자열 이어붙이기(+= 방식) — 반복마다 새 문자열이 만들어져 str01에 계속 누적됩니다.
- "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이다.
🧠 미니 퀴즈
- i[0] 대신 i[-1](마지막 글자)을 사용하면 결과는 어떻게 될까요?
- 리스트에 "Ulsan"을 마지막에 추가하면 결과 문자열은 어떻게 바뀔까요?
- str01 = str01 + i[0]을 str01 += i[0:2]로 바꾸면 결과는?
정답
- "lnijuun" — 각 단어의 마지막 글자: Seoul→l, Inchon→n, Kyonggi→i, Daejun→n, Daegu→u, Pusan→n
- "SIKDDPU" — 끝에 U(Ulsan의 첫 글자)가 추가됨
- "SeInKyDaDaPu" — 각 단어의 앞 두 글자씩 이어붙임
'파이썬' 카테고리의 다른 글
| Python 문자열 포맷 (폭과 정밀도) 문제 풀이(Claude) (0) | 2026.07.11 |
|---|---|
| 네 글자만 남기고, 열 칸에 정렬하기(Chatgpt) (0) | 2026.07.11 |
| 도시 이름의 첫 글자로 완성하는 문자열(Chatgpt) (0) | 2026.07.11 |
| Python 포맷 문자열과 지수표기법 문제 풀이(Claude) (0) | 2026.07.11 |
| 줄바꿈 뒤에 /를 붙이고, 실수를 반올림하라(Chatgpt) (0) | 2026.07.11 |