프로그래머스/파이썬_입문

인덱스 바꾸기

싱싱한복초이 2024. 11. 3. 15:41

https://school.programmers.co.kr/learn/courses/30/lessons/120895

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[문제 설명]

문자열 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