본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 인덱스 바꾸기

by nam_ji 2024. 3. 12.

인덱스 바꾸기

문제

  • 문자열 my_string과 정수 num1, num2가 매개변수로 주어집니다.
  • my_string에서 인덱스 num1과 num2에 해당하는 문자를 바꾼
  • 문자열을 출력하는 문제입니다.


테스트 (인텔리제이)

  • 우선 my_string을 char 배열로 변환하고
  • 변환된 배열의 num1 자리에 charAt을 이용하여 num2 위치의 원소를 저장하고
  • 변환된 배열의 num2 자리에 charAt을 이용하여 num1 위치의 원소를 저장하게 합니다.
  • 그 문자 배열을 String 클래스의 valueOf를 이용하여 String으로 변환하여 출력하면 됩니다.
  • 다른 사람 풀이에서 Collections의 swap 메서드를 이용한 좋은 풀이가 있어 가져와 봤습니다.
  • swap 메서드는 내가 지정한 위치의 값을 바꿔주는 기능을 한다고 합니다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {

  public static void main(String[] args) {
    /*
    문자열 my_string과 정수 num1, num2가 매개변수로 주어집니다.
    my_string에서 인덱스 num1과 num2에 해당하는 문자를 바꾼
    문자열을 출력하는 문제입니다.
    my_string	    num1	num2	result
    "hello"	      1	    2	    "hlelo"
    "I love you"	3	    6	    "I l veoyou"
     */
    String my_string = "hello";
    int num1 = 1;
    int num2 = 2;
    char[] arr = my_string.toCharArray();
    arr[num1] = my_string.charAt(num2);
    arr[num2] = my_string.charAt(num1);
    String answer = String.valueOf(arr);
    System.out.println(answer);
//    List<String> list = new ArrayList<>(List.of(my_string.split("")));
//    Collections.swap(list, num1, num2);
//    System.out.println(String.join("", list));
  }
}

프로그래머스 코드

import java.util.*;

class Solution {
    public String solution(String my_string, int num1, int num2) {
        List<String> list = new ArrayList<>(List.of(my_string.split("")));
        Collections.swap(list, num1, num2);
        return String.join("", list);
        // String answer = "";
        // char[] arr = my_string.toCharArray();
        // arr[num1] = my_string.charAt(num2);
        // arr[num2] = my_string.charAt(num1);
        // return answer = String.valueOf(arr);
    }
}