Just Do IT!

[프로그래머스 Level 0] 120895. 인덱스 바꾸기 (JavaScript) 본문

코딩테스트 준비/프로그래머스

[프로그래머스 Level 0] 120895. 인덱스 바꾸기 (JavaScript)

MOON달 2023. 1. 12. 20:13
728x90

문제 설명

문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, 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"입니다.

 


 

function solution(my_string, num1, num2) {
    // num1과 num2 숫자를 바꾸면 된다
    // splice: 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경
    // 원본 배열을 수정하는 것
    // splice(start, deleteCount, item1)
    // start: 배열 변경 시작할 인덱스
    // deleteCount : 삭제할 요소의 수
    // item1 : 배열에 추가할 요소

    // => num1 위치에서 하나 삭제하고 num2를 넣어준다
    // num2도 마찬가지

    const result = [...my_string];

    result.splice(num1, 1, my_string[num2]);
    result.splice(num2, 1, my_string[num1]);

    return result.join("");
}

 

 

다른 사람 풀이 (splice 없이 임시 변수 만들어서 자리를 바꾸기 → C 배울때 배웠던 건데 까먹었음...)

function solution(my_string, num1, num2) {
    const arr = my_string.split('');
    const temp = arr[num1];
    arr[num1] = arr[num2];
    arr[num2] = temp;
    return arr.join('');
}

 

728x90