문제 설명
문자열 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;
}