Python 리스트·문자열 함수 분석 문제 풀이(Claude)

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

📌 문제

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

arr_str = input('input String :').split('-')
arr_len = int(input('input number : '))
arr_val = list(range(0,arr_len,2))
arr_val.remove(4)
print(arr_str[1].find('i') + arr_val[2])

입력:

  • input string : information-technology
  • input number : 12

단계별 실행

1행 — arr_str

"information-technology".split('-')
# → ["information", "technology"]

arr_str[0] = "information", arr_str[1] = "technology"

2행 — arr_len

arr_len = 12

3행 — arr_val

list(range(0, 12, 2))
# → [0, 2, 4, 6, 8, 10]

4행 — arr_val.remove(4)

arr_val = [0, 2, 6, 8, 10]

값 4를 리스트에서 제거합니다. (인덱스 4번이 아니라 값이 4인 원소를 찾아서 삭제)

5행 — print(arr_str[1].find('i') + arr_val[2])

  • arr_str[1] = "technology"
  • "technology".find('i') → t-e-c-h-n-o-l-o-g-y에는 'i'가 없음 → -1 반환
  • arr_val[2] = [0, 2, 6, 8, 10]의 인덱스 2번 = 6
-1 + 6 = 5

✅ 최종 실행 결과

5

⚠️ 함정 포인트

  1. remove()는 값을 지운다, 인덱스가 아니다 arr_val.remove(4)는 인덱스 4번 원소를 지우는 게 아니라 값이 4인 원소를 찾아 지웁니다.
  2. find()는 못 찾으면 -1을 반환한다 "technology"에는 'i'가 없다는 걸 놓치기 쉽습니다. 이 문제의 핵심 트릭입니다.
  3. range(0, 12, 2)는 12를 포함하지 않는다 0부터 시작해서 2씩 증가하며 12 직전까지 → [0, 2, 4, 6, 8, 10]

🎯 핵심 개념 정리

split(구분자)

지정한 구분자를 기준으로 문자열을 나눠 리스트로 반환합니다.

"a-b-c".split('-')
# → ["a", "b", "c"]

range(시작, 종료, 간격)

종료값은 포함하지 않습니다.

list(range(0, 12, 2))
# → [0, 2, 4, 6, 8, 10]

list.remove(값)

리스트에서 해당 값을 가진 첫 번째 원소를 삭제합니다. (인덱스 삭제가 아님)

[0, 2, 4, 6].remove(4)
# → [0, 2, 6]

인덱스로 삭제하려면 del list[인덱스] 또는 list.pop(인덱스)를 사용해야 합니다.

str.find(문자)

찾는 문자의 첫 인덱스를 반환하고, 없으면 -1을 반환합니다. (index()와 달리 에러가 나지 않음)

"technology".find('i')   # -1 (없음)
"information".find('i')  # 0 (있음)

🧠 미니 퀴즈

  1. 입력을 "data-science", 12로 바꾸면 결과는 어떻게 될까요?
  2. arr_val.remove(4)를 arr_val.pop(4)로 바꾸면 어떤 차이가 생길까요?
  3. arr_str[1].find('i')를 arr_str[0].find('i')로 바꾸면 결과는?

정답

  1. arr_str = ["data", "science"], arr_str[1].find('i')는 "science"에서 'i'가 4번 인덱스에 있으므로 4. arr_val[2]는 그대로 6. 결과 = 4 + 6 = 10
  2. remove(4)는 값 4를 찾아 지우지만, pop(4)는 인덱스 4번 원소(8)를 지웁니다. 결과 리스트가 [0, 2, 4, 6, 10]이 되어 arr_val[2]가 4로 바뀌므로 최종 결과도 달라집니다.
  3. "information".find('i')는 0번 인덱스에서 바로 발견되므로 0. 결과 = 0 + 6 = 6