[프로그래머스/181904] 세로 읽기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이
- 배열에 my_string을 m자리씩 끊어 담아준 뒤, 각 요소의 c번째 열에 적힌 문자열을 더해 출력해주었다.
//시간: 0.21ms
//메모리: 71.9MB
import java.util.*;
class Solution {
public String solution(String my_string, int m, int c) {
String answer = "";
// m 개로 나눠서 배열에 담기
String[] arr = new String[my_string.length() / m];
int idx = 0;
for (int i = 0; i < my_string.length() / m; i++) {
arr[i] = my_string.substring(idx, idx + m);
idx+=m;
}
// 각 요소의 c번째 열에 적힌 글자 뽑기
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i].charAt(c - 1));
}
return sb.toString();
}
}
두 번째 풀이
- for문을 활용하여 더 간결하게 구현할 수 있는 풀이를 보고 다시 풀어보았다.
//시간: 0.12ms
//메모리: 71.5MB
import java.util.*;
class Solution {
public String solution(String my_string, int m, int c) {
StringBuilder sb = new StringBuilder();
for (int i = c - 1; i < my_string.length(); i += m) {
sb.append(my_string.charAt(i));
}
return sb.toString();
}
}