[프로그래머스] Level0. 인덱스 바꾸기

Benjamin·2023년 2월 6일
0

프로그래머스

목록 보기
11/58

내 풀이

class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";
        for(int i=0; i<my_string.length(); i++) {
            if(i == num1) {
                answer += my_string.charAt(num2);
            }
            else if(i == num2) {
                answer += my_string.charAt(num1);
            }
            else answer += my_string.charAt(i);
        }
        return answer;
    }
}

내가 몰랐던 함수를 사용했거나, 간결해보이는 다른 풀이를 가져왔다.

다른 풀이 1

class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";

        char[] ch = my_string.toCharArray();

        ch[num1] = my_string.charAt(num2);
        ch[num2] = my_string.charAt(num1);

        answer = String.valueOf(ch);
        return answer;
    }
}

배열에 넣어서 인덱스로 교환해줘도 된다. 그럼 반복문 필요없다.

여기서 몰랐던건, String.valueOf()의 파라미터로 배열이 들어가도된다!!

다른 풀이 2

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);
    }
}

list에서 swap연산을 사용해서 풀수도있다!

공부한 사항

  • String.valueOf()의 파라미터로 char배열이 들어갈 수 있다.
  • Collections.swap()

0개의 댓글