인덱스 바꾸기, charAt과 String에 대해서

  • 문제는
    문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
  • 내가 생각했던 답은
class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = my_string;
        
        char temp = my_string.charAt(num1);
        answer.charAt(num2) = temp;
        temp = my_string.charAt(num2);
        answer.charAt(num1) = temp;
        
        return answer;
    }
}

으로, charAt과 temp를 이용해서 서로의 값을 바꿔주려고 했었는데

계속 required되는건 variable인데 나는 value값을 넣어준다고 한다.
찾다보니,
charAt(i) 함수는 String 문자열의 i인덱스 위치의 한글자의 문자(char)의 값을 가져오기만 하는 메서드이기 때문에 해당 위치의 값을 변경하려 할 때 변수로써 사용할 수 없다.
또한, String은 불변(immutable)이다!

그래서 해결한 방법은

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

배열에 값을 넣어서 변경해줬다.

profile
백엔드를 공부하고 있습니다.

0개의 댓글