https://school.programmers.co.kr/learn/courses/30/lessons/120895
[문제 설명]
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 < my_string의 길이 < 100
- 0 ≤ num1, num2 < my_string의 길이
- my_string은 소문자로 이루어져 있습니다.
- num1 ≠ num2
[나의 풀이]
처음에 짠 코드
def solution(my_string, num1, num2):
a = my_string[num1]
b = my_string[num2]
my_string.replace(my_string[num1],b)
my_string.replace(my_string[num2],a)
return my_string
당연히 통과 못 함
- replace 메서드는 문자열 전체에서 해당 문자를 찾아 모두 교체하므로, 다른 위치에 동일한 문자가 있을 경우 원하지 않는 부분까지 바뀔 수 있습니다.
- replace 메서드는 문자열 자체를 직접 수정하지 않기 때문에, my_string 변수는 변하지 않고 원래 문자열이 반환됩니다.
라는게 챗지피티의 의견
해결방법: 문자열을 리스트로 변환한 후 인덱스의 값을 교환하고, 다시 문자열로 변환하는 것
def solution(my_string, num1, num2):
my_list = list(my_string)
# 인덱스 num1과 num2의 문자 교환
my_list[num1], my_list[num2] = my_list[num2], my_list[num1]
# 리스트를 문자열로 다시 변환하여 반환
return ''.join(my_list)
[다른 풀이]
def solution(my_string, num1, num2):
[a, b] = sorted([num1, num2])
return my_string[0:a] + my_string[b] + my_string[a+1:b] + my_string[a] + my_string[b+1:]
'프로그래머스 > 파이썬_입문' 카테고리의 다른 글
약수 구하기+set(),extend() (0) | 2024.11.06 |
---|---|
한 번만 등장한 문자 (0) | 2024.11.05 |
영어가 싫어요 (0) | 2024.11.02 |
대문자와 소문자 (0) | 2024.11.01 |
암호 해독 (0) | 2024.10.30 |