문자열은 나누고, 숫자는 골라내기(Chatgpt)

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

split(), range(), remove(), find() 실행 흐름 추적


1. 문제

다음 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

2. 주요 포인트

이 문제는 문자열과 리스트가 코드 한 줄씩 실행되면서 어떻게 변하는지를 추적하는 문제입니다.

① split('-')

문자열.split('-')

문자열을 하이픈 -을 기준으로 나누어 리스트로 만듭니다.

"information-technology".split('-')

결과:

["information", "technology"]

② range(시작, 종료, 증가값)

range(0, arr_len, 2)

0부터 시작해 2씩 증가하며 숫자를 생성합니다.

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

range(0, 12, 2)

결과:

0, 2, 4, 6, 8, 10

③ remove(값)

arr_val.remove(4)

리스트에서 값이 4인 요소를 삭제합니다.

주의할 점은 4번 인덱스를 삭제하는 것이 아니라, 리스트 안에 있는 값 4를 삭제한다는 것입니다.


④ find('i')

문자열.find('i')

문자열에서 'i'가 처음 나타나는 위치를 반환합니다.

찾는 문자가 없으면 오류가 발생하는 것이 아니라 다음 값을 반환합니다.

-1

3. 풀이

3-1. 문자열 입력 후 분리

첫 번째 문장은 다음과 같습니다.

arr_str = input('input String :').split('-')

입력값은 다음과 같습니다.

information-technology

하이픈 -을 기준으로 문자열을 나누면 다음과 같은 리스트가 만들어집니다.

arr_str = ["information", "technology"]

각 요소를 인덱스로 확인하면 다음과 같습니다.

인덱스값

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

따라서 다음 값은 "technology"입니다.

arr_str[1] = "technology"

3-2. 숫자 입력 후 정수로 변환

두 번째 문장은 다음과 같습니다.

arr_len = int(input('input number : '))

입력값은 12입니다.

arr_len = 12

input()으로 입력받은 값은 문자열이므로, int()를 사용해 정수로 변환합니다.


3-3. 짝수 리스트 생성

세 번째 문장은 다음과 같습니다.

arr_val = list(range(0, arr_len, 2))

arr_len은 12이므로 실제 실행은 다음과 같습니다.

arr_val = list(range(0, 12, 2))

0부터 12 직전까지 2씩 증가하는 숫자는 다음과 같습니다.

0 → 2 → 4 → 6 → 8 → 10

따라서 리스트는 다음과 같이 만들어집니다.

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

range()는 종료값인 12를 포함하지 않습니다.


3-4. 리스트에서 값 4 삭제

네 번째 문장은 다음과 같습니다.

arr_val.remove(4)

현재 리스트는 다음과 같습니다.

[0, 2, 4, 6, 8, 10]

remove(4)를 실행하면 값이 4인 요소가 삭제됩니다.

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

삭제 후 인덱스를 다시 확인해야 합니다.

인덱스01234

0 2 6 8 10

따라서 다음 값은 6입니다.

arr_val[2] = 6

3-5. "technology"에서 문자 'i' 찾기

출력문에는 다음 표현이 있습니다.

arr_str[1].find('i')

arr_str[1]은 다음 문자열입니다.

technology

문자의 위치를 확인하면 다음과 같습니다.

인덱스0123456789

문자 t e c h n o l o g y

"technology"에는 문자 'i'가 없습니다.

따라서 find('i')는 -1을 반환합니다.

arr_str[1].find('i') = -1

3-6. 최종 계산

출력문은 다음과 같습니다.

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

앞에서 구한 값을 대입합니다.

print(-1 + 6)

계산 결과는 다음과 같습니다.

5

4. 실행 흐름 한눈에 보기

information-technology
        ↓ split('-')
["information", "technology"]
                         ↓
                arr_str[1] = "technology"
                         ↓ find('i')
                         -1
range(0, 12, 2)
        ↓
[0, 2, 4, 6, 8, 10]
        ↓ remove(4)
[0, 2, 6, 8, 10]
        ↓
arr_val[2] = 6

최종 계산:

-1 + 6 = 5

5. 정답

5

6. 시험에서 주의할 함정

remove(4)의 의미

arr_val.remove(4)

잘못된 해석:

4번 인덱스의 값을 삭제한다.

올바른 해석:

리스트 안에서 값 4를 찾아 삭제한다.

find()에서 문자를 찾지 못한 경우

"technology".find('i')

문자 'i'가 없더라도 오류가 발생하지 않습니다.

결과: -1

7. 시험 풀이 요약

"information-technology"를 '-'로 분리하면
["information", "technology"]가 된다.

range(0, 12, 2)를 리스트로 만들면
[0, 2, 4, 6, 8, 10]이다.

remove(4)를 실행하면
[0, 2, 6, 8, 10]이 되므로 arr_val[2]는 6이다.

"technology"에는 문자 'i'가 없으므로
find('i')의 결과는 -1이다.

따라서 -1 + 6 = 5가 출력된다.