프로그래머스 <인덱스 바꾸기>
문제 설명
문자열 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("")
}
중요 개념
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;
}