[프로그래머스] 인덱스 바꾸기


문제 설명

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


제한사항

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

입출력 예

my_stringnum1num2result
“hello”12“hlelo”
“I love you”36“I l veoyou”

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

나의 풀이

function solution(my_string, num1, num2) {
  var answer = [...my_string];
  let idx2 = answer[num2];
  answer[num2] = answer[num1];
  answer[num1] = idx2;
  return answer.join("");
}

나의 두번째 풀이(Code Refactoring)

function solution(my_string, num1, num2) {
  let result = [...my_string];
  const [first, second] = [my_string[num1], my_string[num2]];
  result[num1] = second;
  result[num2] = first;
  return result.join("");
}

// 구조 분해 할당으로 first 인덱스 , second 인덱스를 찾아주고 직접 인덱스를 바꿔주는 방법

참고 할 만한 다른 사람의 코드

function solution(my_string, num1, num2) {
  var answer = "";

  let arr = my_string.split("");
  let tmp1 = my_string[num1];
  let tmp2 = my_string[num2];
  arr.splice(num1, 1, tmp2);
  arr.splice(num2, 1, tmp1);
  answer = arr.join("");

  return answer;
}

// splice 메소드로 바꿔주는 방법