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
'프로그래머스 코딩(자바) > Level 0' 카테고리의 다른 글
Programmers Level 0 - 외계 행성의 나이 (0) | 2023.03.03 |
---|---|
Programmers Level 0 - 배열 회전 시키기 (0) | 2023.03.02 |
Programmers Level 0 - 가장 큰 수 찾기 (0) | 2023.03.02 |
Programmers Level 0 - 최댓값 만들기 (2) (0) | 2023.03.02 |
Programmers Level 0 - 주사위의 개수 (0) | 2023.03.02 |