brunch

You can make anything
by writing

C.S.Lewis

by Lynn Nov 20. 2022

코딩테스트 <인덱스 바꾸기>

프로그래머스 <인덱스 바꾸기>

문제 설명

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


제한 사항

1 < my_string의 길이 < 100

0 ≤ num1, num2 < my_string의 길이

my_string은 소문자로 이루어져 있습니다.

num1 ≠ num2


문제 풀이

function solution(my_string, num1, num2) {

    let answer = Array.from(my_string);

    answer.splice(num1, 1, my_string[num2])

    answer.splice(num2, 1, my_string[num1])

    return answer.join("")

}

Array.from() 메서드 이용
split("") 메서드를 이용
[...]닷 연산자 이용

중요 개념

Array.from() 메서드를 이용하여 문자열을 배열로 변환하도록 해준다. 

여기서 중요한 것은, 문자열은 enumerable 즉 셀 수 있는 수이다. 

따라서 문자열에 배열 메서드를 바로 적용하여 활용할 수 있다. 


1) Array.from() 메서드 이용하여 문자열을 배열로 바꿔준다. 

2) split("") 메서드 이용하여 문자열을 배열로 바꿔준다. 

3) [...]닷 연산자를 이용하여 문자열 my_string의 원시값을 깊게 복사해 온다. 


splice() 메서드를 이용하여 배열 요소를 갈아 끼워 준다. 

마지막 join() 메서드를 통해 배열의 값을 문자열로 바꿔 반환해 준다. 



다른풀이

for 반복문만을 이용해서도 풀 수 있다. 


function solution(my_string, num1, num2) {

     var answer = '';

     for(let i = 0;i<my_string.length;i++){

         if(i === num1){

             answer += my_string[num2]

         }else if(i === num2){

             answer += my_string[num1]

         }else{             answer += my_string[i]

         }

     }

     return answer;

 } 

작가의 이전글 코딩 테스트 <짝수 홀수 개수>
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari