문제
내가 작성한 정답
String
class Solution {
public String solution(String my_string, int m, int c) {
String answer = "";
for(int i=0; i<my_string.length(); i+=m){
answer += String.valueOf(my_string.charAt(c-1+i));
}
return answer;
}
}
StringBuilder, StringBuffer
class Solution {
public String solution(String my_string, int m, int c) {
StringBuilder answer = new StringBuilder();
// StringBuffer answer = new StringBuffer();
for(int i=0; i<my_string.length(); i+=m){
answer.append(String.valueOf(my_string.charAt(c-1+i)));
}
return answer.toString();
}
}
2차 배열
class Solution {
public String solution(String my_string, int m, int c) {
//StringBuilder answer = new StringBuilder();
//StringBuffer answer = new StringBuffer();
String answer = "";
int len = my_string.length(), le = len%m==0?len/m:len/m+1, idx = 0;
String[][] ms = new String[le][m];
for(int i=0; i<le; i++){
for(int j=0; j<m; j++){
ms[i][j] = String.valueOf(my_string.charAt(idx++));
}
}
for(int i=0; i<le; i++){
//answer.append(ms[i][c-1]);
answer += ms[i][c-1];
}
//return answer.toString();
return answer;
}
}
Stream
import java.util.stream.*;
class Solution {
public String solution(String my_string, int m, int c) {
return IntStream.range(0,my_string.length()%m==0?my_string.length()/m:my_string.length()/m+1)
.mapToObj(i-> my_string.substring(i*m,(i+1)*m))
.map(s->String.valueOf(s.charAt(c-1)))
.collect(Collectors.joining());
}
}
다른 사람들의 정답
import java.util.stream.*;
class Solution {
public String solution(String myString, int m, int c) {
return IntStream.range(0, myString.length())
.filter(i -> i % m == c - 1)
.mapToObj(i -> String.valueOf(myString.charAt(i)))
.collect(Collectors.joining());
}
}
Share article