인덱스 바꾸기

2024. 9. 10. 18:00코딩테스트 입문

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


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


제한사항

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

입출력 예

my_string num1 num2 result
"hello" 1 2 "hlelo"
"I love you" 3 6 "I l veoyou"

입출력 예 설명
입출력 예 #1

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

입출력 예 #2

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

문자열 my_string과 인덱스 num1, num2가 주어졌을 때, num1과 num2 인덱스에 위치한 문자들을 서로 바꾸는 문제입니다.

 

문자열은 인덱싱을 적용할 수 없는 자료형이기 때문에, 이 둘을 바꾸기 위해서는 리스트로 변환할 필요가 있습니다.

리스트로 변환한 뒤에는 서로의 값을 swap해주면 됩니다.

파이썬으로 문제를 풀어보겠습니다.

def solution(my_string, num1, num2):
    # 문자열의 요소를 하나씩 잘라 리스트로 저장합니다.
    answer = [s for s in my_string]
    # 리스트의 요소들을 swap합니다.
    answer[num1], answer[num2] = answer[num2], answer[num1]
    # 리스트를 join을 사용하여 공백 없이 붙입니다.
    return ''.join(answer)

 

보통 swap을 한다고 하면 temp을 설정해서 사용하는 방법이 기본적입니다만, 파이썬은 a, b = b, a라고 쓰더라도 swap이 가능합니다.

물론 내부적으로는 temp을 사용하는 형태기는 하지만, 명시해주지 않아도 된다는 장점이 있죠.

swap을 한 다음에는 join 함수로 문자열로 다시 변환해주면 됩니다.

 

문자열에는 인덱싱이 불가능함을 알면 간단하게 풀 수 있습니다.

'코딩테스트 입문' 카테고리의 다른 글

약수 구하기  (0) 2024.09.12
한 번만 등장한 문자  (0) 2024.09.11
영어가 싫어요  (0) 2024.09.09
대문자와 소문자  (1) 2024.09.08
암호 해독  (1) 2024.09.07