[프로그래머스/181904] 세로 읽기

☑️ 문제

프로그래머스 181904

☑️ 풀이

첫 번째 풀이

  • 배열에 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();
    }
}

© 2021. All rights reserved.

yaejinkong의 블로그