2022. 12. 27. 17:08ㆍcode/[프로그래머스] 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]하면 되는 거였네...
👀느낀 점
: 너무 어렵게 생각해서 더 꼬아버린 경우를 경험했다.
그냥 단순하게 생각하면 됐었던건데...^^
'code > [프로그래머스] python' 카테고리의 다른 글
[코딩 테스트 연습 입문] 배열의 유사도 (0) | 2022.12.28 |
---|---|
[코딩 테스트 연습 입문] 가장 큰 수 찾기 (0) | 2022.12.28 |
[코딩 테스트 연습 입문] 영어가 싫어요 (2) | 2022.12.27 |
[코딩 테스트 연습 입문] 대문자와 소문자 (0) | 2022.12.27 |
[코딩 테스트 연습 입문] 암호 해독 (0) | 2022.12.27 |