brunch

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

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

by Lynn

문제 설명

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

}

스크린샷 2022-11-20 오후 9.03.12.png Array.from() 메서드 이용
스크린샷 2022-11-21 오후 3.13.32.png split("") 메서드를 이용
스크린샷 2022-11-21 오후 3.14.10.png [...]닷 연산자 이용

중요 개념

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;

}

keyword
작가의 이전글코딩 테스트 <짝수 홀수 개수>