프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 인덱스 바꾸기(Java)

Sigfriede 2023. 4. 2. 02:31

  문제 설명

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

 

  제한사항

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

 

  입출력 예

my_string num1 num2 result
"hello" 1 2 "hlelo"
"I love you" 3 6 "I l veoyou"
import java.util.Arrays;

class Solution {
    public String solution(String my_string, int num1, int num2) {
        char[] c = my_string.toCharArray();
        char[] ch = Arrays.copyOf(c, c.length);
        ch[num1] = c[num2];
        ch[num2] = c[num1];
        
        String answer = String.valueOf(ch);
        return answer;
    }
}

  my_string을 char 배열 형태로 인덱스를 구하기로 했습니다. char 배열 c를 카피한 ch 배열을 하나 더 만들어주었습니다. c의 num1과 num2의 인덱스 번호를 추출하여 각각 ch의 num1과 num2의 인덱스 위치에 할당했습니다. 이렇게 인덱스를 바꾼 배열 ch를 다시 String형으로 형변환하여 answer와 형을 맞춰 할당했습니다.

  c 배열을 만들지 않고 c에서 charAt()을 통해 ch에 바로 할당하는 방법도 있겠네요. 또는 StringBuilder를 통해 보다 효율적인 생성을 추구할 수도 있구요.