코드
def solution(my_string, num1, num2):
temp = my_string[num1]
my_string[num1] = my_string[num2]
my_string[num2] = temp
return my_string
당연히 이렇게 하면 될 거라고 생각했다. 근데 안된다. 아래와 같은 오류가 발생한다.
my_string[num1] = my_string[num2]
TypeError: 'str' object does not support item assignment
문자열에서 인덱스로 접근해 item을 바꾸려고 하면 TypeError가 발생한다.
이 방식으로 해결하려면 문자열을 리스트로 바꿔주는 과정을 우선적으로 해야 한다.
def solution(my_string, num1, num2):
answer = ''
my_string = list(my_string)
temp = my_string[num1]
my_string[num1] = my_string[num2]
my_string[num2] = temp
answer = ''.join(my_string)
return answer
하지만 파이썬에서 temp라는 변수를 따로 지정할 필요가 없다는 사실을 간과하고 있었다.
a, b = b, a처럼 코드를 작성해 주면 a, b의 값을 서로 바꿔 저장할 수 있다.
my_string[num1],my_string[num2] = my_string[num2],my_string[num1]
세 줄에 걸쳐 스위치 했던 과정을 한 줄로 나타낼 수 있다.
반응형