본문 바로가기
Coding Test

230927 인덱스 바꾸기 - Level 0

by mmm- 2023. 9. 27.

문제 설명

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

제한사항

  • 1 < my_string의 길이 < 100
  • 0 ≤ num1, num2 < my_string의 길이
  • my_string은 소문자로 이루어져 있습니다.
  • num1 ≠ num2

 

입출력 예

 

입출력 설명

입출력 예 #1

  • "hello"의 1번째 인덱스인 "e"와 2번째 인덱스인 "l"을 바꾸면 "hlelo"입니다.

입출력 예 #2

  • "I love you"의 3번째 인덱스 "o"와 " "(공백)을 바꾸면 "I l veoyou"입니다.

코드

class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";
        String[] strArr = my_string.split("");
        
        strArr[num1] = String.valueOf(my_string.charAt(num2));
        strArr[num2] = String.valueOf(my_string.charAt(num1));
        
        answer = String.join("", strArr);
        
        return answer;
    }
}

 

풀이

my_string을 문자열배열로 변환하여 num1번째 자리에 num2 문자를 저장하고, num2번째 자리에 num1 문자를 저장한다. join을 이용해 문자열로 변환하여 answer에 저장한다.


다른 코드와 풀이

아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

class Solution {
    public String solution(String myString, int num1, int num2) {
        List<String> list = Arrays.stream(myString.split("")).collect(Collectors.toList());

        Collections.swap(list, num1, num2);
        return String.join("", list);
    }
}

 
myString을 문자스트림으로 변환하여 문자열의 각 문자를 리스트의 요소로 저장한다. Collections.swap() 메서드를 통해 list의 num1, num2에 해당하는 문자를 서로 교환하고 이를 문자열로 변환한다.


정리

swap()
: 지정된 위치에 있는 요소를 교환하는 메서드