본문 바로가기
algorithm/Programmers

[JAVA] 인덱스 바꾸기

by 이쟝 2023. 3. 3.

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


제한사항

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

입출력 예

my_stringnum1num2result

"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. 내가 푼 풀이

class Solution {
    public String solution(String my_string, int num1, int num2) {
        char ch1 = 'c';
        char ch2 = 'c';
        for(int i=0;i<my_string.length();i++) {
            if(i == num1) ch1 = my_string.charAt(i);
            else if(i == num2) ch2 = my_string.charAt(i);
        }
        
        StringBuilder answer = new StringBuilder(my_string);
        answer.setCharAt(num1, ch2);
        answer.setCharAt(num2, ch1);
       
        return answer.toString();
    }
}

위에 코드 간략하게

class Solution {
    public String solution(String my_string, int num1, int num2) {
        char[] ch = my_string.toCharArray();

        ch[num1] = my_string.charAt(num2);
        ch[num2] = my_string.charAt(num1);
       
        return String.valueOf(ch);
    }
}
  • StringBuilder의 sb.setChatAt(바꿀 인덱스, 바꿀 문자)를 이용하면 손쉽게 치환가능!
  • 만약에 StringBuilder 안사용하고 그냥 char 열로 바꿔서 그것의 인덱스를 찾아서 바꾸기 가능..!
  • 문자열을 쓴다면 setCharAt( )도 간편한 것 같다.

'algorithm > Programmers' 카테고리의 다른 글

[JAVA] 문자열 계산하기  (0) 2023.03.09
한 번만 등장한 문자  (0) 2023.03.07
[JAVA] 컨트롤 제트  (0) 2023.03.02
[JAVA] 대문자와 소문자(대문자, 소문자 변환)  (0) 2023.02.10
[JAVA] 369 게임  (0) 2023.02.09