세로 읽기

Programmers 코딩 기초 트레이닝


문제 설명

문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 반환하는 solution 함수를 작성해 주세요.

제한사항

  • my_string은 영소문자로 이루어져 있습니다.
  • 1 ≤ mmy_string의 길이 ≤ 1,000
  • mmy_string 길이의 약수로만 주어집니다.
  • 1 ≤ cm

입출력 예

my_string m c result
“ihrhbakrfpndopljhygc” 4 2 “happy”
“programmers” 1 1 “programmers”

입출력 예 설명

입출력 예 #1

예제 1번의 my_string을 한 줄에 4 글자씩 쓰면 다음의 표와 같습니다.

1열 2열 3열 4열
i h r h
b a k r
f p n d
o p l j
h y g c

2열에 적힌 글자를 세로로 읽으면 “happy”이므로 “happy”를 반환합니다.

입출력 예 #2

예제 2번의 my_stringm이 1이므로 세로로 “programmers”를 적는 것과 같고 따라서 1열에 적힌 글자를 세로로 읽으면 “programmers”입니다. 따라서 “programmers”를 반환합니다.


class Solution {
    public String solution(String my_string, int m, int c) {

        char[] charArr = my_string.toCharArray();

        // m개씩 잘랐을 때 총 회전 횟수
        int total = my_string.length() / m;
        char[][] newcharArr = new char[total][m];
        
        int idx = 0;
        for (int i = 0; i < total; i++) {
            for (int j = 0; j < m; j++) {
                newcharArr[i][j] = charArr[idx++];
            }
        }
        
        StringBuilder stringBuilder = new StringBuilder();

        // 총 회전에서 c번째 글자 추출해서 새로운 글자 만드는 작업
        for (int i = 0; i < total; i++) {            
            stringBuilder.append(newcharArr[i][c - 1]);            
        }
        
        return stringBuilder.toString();
    }
}


출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

Leave a comment