📢 문제 출처
⏰ 문제 설명
- 문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다.
- my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return
⏰ 입출력 예시
my_string |
index_list |
result |
"cvsgiorszzzmrpaqpe" |
[16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7] |
"programmers" |
"zpiaz" |
[1, 2, 0, 0, 3] |
"pizza" |
- 입출력 예 #1
- (1) 예제 1번의 my_string에서 인덱스 3, 5, 6, 11, 12, 14, 16, 17에 해당하는 글자는 각각 g, o, r, m, r, a, p, e 이다.
- (2) my_string에서 index_list에 들어있는 원소에 해당하는 인덱스의 글자들은
- (3) 각각 순서대로 p, r, o, g, r, a, m, m, e, r, s입니다. 따라서 "programmers"를 return 합니다.
- 입출력 예 #2
- (1) 예제 2번의 my_string에서 인덱스 0, 1, 2, 3에 해당하는 글자는 각각 z, p, i, a이므로
- (2) my_string에서 index_list에 들어있는 원소에 해당하는 인덱스의 글자들은 각각 순서대로 p, i, z, z, a입니다.
- (3) 따라서 "pizza"를 return 합니다.
⏰ 풀이
class Solution {
public String solution(String my_string, int[] index_list) {
String answer = "";
for(int i =0;i<index_list.length;i++){
answer += my_string.charAt(index_list[i]);
}
return answer;
}
}
- index_list.length 에 맞게 반복문을 돌린다.
- 문자열에 있는 문자를 하나씩 추출해야 하기 때문에 .charAt()를 사용한다.
- 도출되는 값을 answer에 대입하여 마지막 값을 리턴한다.
⏰ 다른 풀이
import java.util.*;
class Solution {
public String solution(String my_string, int[] index_list) {
StringBuffer sb = new StringBuffer();
for (int index : index_list)
sb.append(my_string.charAt(index));
return sb.toString();
}
}
- StringBuffer를 하나 새로 생성한다.
- index_list에 맞게 for-each문을 사용한다.
- 문자열에 있는 문자를 하나씩 추출해야 하기 때문에 .charAt()를 사용하여 StringBuffer에 append를 진행한다.
- 리턴 시에는 String 으로 변환해야하기 때문에 .toStirng()을 진행하여 리턴을 진행한다.
댓글