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

Lenny·2023년 4월 24일

문제

풀이

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;
}

개노답 풀이 등장~!

그래서 오늘은 이쁘게 푼 다른 사람의 풀이를 분석하는 시간을 가진다.

다른 사람의 풀이

function solution(my_string, num1, num2) {
    my_string = my_string.split('');
    [my_string[num1], my_string[num2]] = [my_string[num2], my_string[num1]];
    return my_string.join('');
}
  1. my_string 을 분리
    -> my_string이 "hello" 라는 문자열이면, ["h", "e", "l", "l", "o"] 와 같은 형태로 변환

  2. 구조 분해 할당을 이용해서 my_string[num1] 자리에는 my_string[num2] 를 할당하고, my_string[num2]에는 my_string[num1]을 할당함.
    -> [my_string[num1], my_string[num2]] = [my_string[num2], my_string[num1]]
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
    구조 분해 할당에 대한 설명이 나와있는 MDN 문서인데, 저렇게 코딩하면 my_string의 특정 인덱스에 특정 값을 할당 할 수 있음.
    예를들어 [my_string[num1], my_string[num2]] = ["h", "i"] 라고 코딩하면 my_string[num1] 에는 문자열 "h" 가 할당되고, my_string[num2] 에는 "i" 가 할당됨.

  3. my_string을 다시 문자열로 조립

profile
🧑‍💻

0개의 댓글