인덱스 바꾸기

반즈·2023년 12월 12일

프로그래머스 입문

목록 보기
38/51

문제 설명

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

입출력 예


자바

나의 풀이

import java.util.*;
class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";
        char[] arr = my_string.toCharArray();
        char c1 = arr[num1];
        char c2 = arr[num2];
        arr[num1] = c2;
        arr[num2] = c1;
        
        String str = String.valueOf(arr);
        answer = str;
        return answer;
    }
}

참고 풀이 1 (좀 더 간단)

class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";

        char[] ch = my_string.toCharArray();

        ch[num1] = my_string.charAt(num2);
        ch[num2] = my_string.charAt(num1);

        answer = String.valueOf(ch);
        return answer;
    }
}

참고 풀이 2 (.split(), 향상된 for문)

class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";
        String[] arr = my_string.split("");
        String temp = arr[num1];
        arr[num1] = arr[num2];
        arr[num2] = temp;
        for(String str : arr){
            answer += str;
        }
        return answer;
    }
}

자바스크립트

나의 풀이 (.split(), .join())

function solution(my_string, num1, num2) {
    let answer = '';
    let arr = my_string.split('');
    arr[num1] = my_string.charAt(num2);
    arr[num2] = my_string.charAt(num1);
    answer = arr.join("");
    return answer;
}

참고 풀이 1 (구조분해할당)

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('');
}

참고 풀이 2 (.map())

function solution(my_string, num1, num2) {
  return my_string
    .split("")
    .map((v, i) =>
      i === num1 ? my_string[num2] : i === num2 ? my_string[num1] : v
    )
    .join("");
}

참고 풀이 3 (.splice())

function solution(my_string, num1, num2) {
    var answer = '';

    let arr = my_string.split("");
    let tmp1 = my_string[num1];
    let tmp2 = my_string[num2];
    arr.splice(num1, 1, tmp2);
    arr.splice(num2, 1, tmp1);
    answer = arr.join("");

    return answer;
}
profile
나를 채우다

0개의 댓글