본문 바로가기

프로그래머스 코딩(자바)/Level 0

Programmers Level 0 - 인덱스 바꾸기

728x90

문제 설명

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

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

 

입출력 예
my_string num1 num2 result
"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 ]

 

1
2
3
4
5
6
7
8
9
10
11
class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";
        char[] ar = my_string.toCharArray();
        char t  = ar[num1];
        ar[num1] = ar[num2];
        ar[num2] = t;
        answer = new String(ar);
        return answer;
    }
}
 

 

 문자 배열을 만들어
 char[] ar = my_string.toCharArray();

 두 개의 위치를 바꾸고
char t  = ar[num1];
ar[num1] = ar[num2];
ar[num2] = t;

 다시 String으로 만든다.
 answer = new String(ar);

 

[ 풀이 2 ]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
 
public 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);
    }
}

 

 

 문자열을 1글자씩 잘라 배열로 만들고
 String.split("")
 
 String배열을 다시 List<String>로 바꿔서
 List<String> list = Arrays.stream(myString.split("")).collect(Collectors.toList());

 Collections.swap()을 이용하여 두개의 요소값을 바꾼다음
 Collections.swap(list, num1, num2);

 String.join으로 다시 한개의 String으로 만든다.
 String.join("", list);

 

728x90