[코딩 테스트 연습 입문] 인덱스 바꾸기

2022. 12. 27. 17:08code/[프로그래머스] python

문제

문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

 

❗제한사항

  • 1 < my_string의 길이 < 100
  • 0 ≤ num1, num2 < my_string의 길이
  • my_string은 소문자로 이루어져 있습니다.
  • num1  num2

 

입출력 예

 

입출력 예 설명

입출력 예 #1

  • "hello"의 1번째 인덱스인 "e"와 2번째 인덱스인 "l"을 바꾸면 "hlelo"입니다.

입출력 예 #2

  • "I love you"의 3번째 인덱스 "o"와 " "(공백)을 바꾸면 "I l veoyou"입니다.

 

✔풀이

def solution(my_string, num1, num2):
    my_string=list(my_string)
    answer = ''
    change_alphabet_1=my_string[num1]
    change_alphabet_2=my_string[num2]

    my_string.insert(num1,change_alphabet_2)
    del my_string[num1+ 1]
    my_string.insert(num2,change_alphabet_1)
    del my_string[num2 + 1]

    return "".join(my_string)

📝설명

my_string이 현재 문자열로 주어져있고, 인덱스 num1, num2의 위치에 있는 문자를 서로 바꿔야 한다.

우선, 편하게 my_string을 list로 변환한 후 재정의한다.

인덱스 num1의 문자, 인덱스 num2의 문자를 각각 저장한 후, .insert()를 활용하여 인덱스넘버(num1)에 따로 저장한 문자(change_alphabet_2)를 넣어준 후, 그렇게 되면 전체 길이 (이를테면 len)가 하나씩 늘어나게된다.

원래의 인덱스 개수를 유지하기 위해서 기없어져야 하는 [num+1] (=기존의 num1자리에 있던 문자) 번째를 del을 이용해 삭제한다.

같은 방식으로 인덱스 num2도 하면 끝!

그러면 결과가 리스트 형태로 나온다. 

return해야 하는 결과는 문자열 형태니까..!

"".join(my_string)을 통해 리스트를 문자열로 변환하면 정말 끝!!

 

👑모범 답안

🔎아... 그냥 s[num1],s[num2] = s[num2],s[num1]하면 되는 거였네...

 

👀느낀 점

: 너무 어렵게 생각해서 더 꼬아버린 경우를 경험했다.

그냥 단순하게 생각하면 됐었던건데...^^