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