본문 바로가기
Study with me/프로그래머스 L0 마스터하기

프로그래머스 - L0 인덱스바꾸기

by 외계나무 2024. 1. 2.

프로그래머스 - level 0 인덱스 바꾸기

나는 좀 단순하게 풀었는데,

class Solution {
    public String solution(String my_string, int num1, int num2) {
        String 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;
    }
}

 

풀이가 다양하게 나오는 것 같아 가져와 봄.

 

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

▲ toCharArray()를 통해 char 배열로 만들어 정석대로 배열 요소 삽입/변경을 수행한 코드.
마지막엔 다시 String.valueOf를 통해 String 객체로 변환해서 리턴했다.

 

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

stream()을 통해 List 객체로 만든 뒤 swap()을 이용한 코드.
마지막에는 다시 String.join()을 통해 String 객체 ""에 list의 요소를 문자열 병합해서 최종적으로 문자열 형태로 리턴했다.

 

class Solution {
    public String solution(String my_string, int num1, int num2) {
        char temp = my_string.charAt(num1);
        StringBuilder sb = new StringBuilder(my_string);
        sb.setCharAt(num1, my_string.charAt(num2));
        sb.setCharAt(num2, temp);
        return String.valueOf(sb);
    }
}

  가변성 있는 문자열 처리에 유용한 StringBuilder를 사용한 코드.
마지막엔 마찬가지로 String.valueOf를 통해 String 객체로 변환해서 리턴했다.