/ ALGORITHM

인덱스 바꾸기

Algorithm 관련 포스팅

이 글은 프로그래머스의 인덱스 바꾸기의 풀이를 정리한 것입니다.

문제 설명

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


제한사항

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

입출력 예

my_string num1 num2 result
“hello” 1 2 “hlelo”
“I love you” 3 6 “I l veoyou”

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

나의 풀이(1)

  • StringBuilder 사용
  • setCharAt(int index, char ch): index의 문자를 ch 문자로 변경
  • toString(): StringBuilder 출력
class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";
        
        StringBuilder sb = new StringBuilder(my_string);
        sb.setCharAt(num1, my_string.charAt(num2));
        sb.setCharAt(num2, my_string.charAt(num1));
        
        answer = sb.toString();
        
        return answer;
    }
}

나의 풀이(2)

  • 문자열.split(): 문자열 자르기
  • tmp 변수를 사용해 num1num2 인덱스의 문자 교환
  • String.join(CharSequence delimiter, CharSequence... elements): 배열을 문자열로 전환

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

나의 풀이(3)

  • substring(int beginIndex, int endIndex): beginIndex부터 endIndex-1 까지의 문자를 반환

      class Solution {
          public String solution(String my_string, int num1, int num2) {
              String answer = "";
                
              answer = my_string.substring(0, num1) + my_string.charAt(num2)
                      + my_string.substring(num1 + 1, num2) + my_string.charAt(num1)
                      + my_string.substring(num2 + 1);
                
              return answer;
          }
      }