Contents

세로 읽는 방법에 대하여(with.Java)

   Sep 14, 2023     1 min read

세로 읽는 방법에 대하여(with.Java) 알아본 글입니다.

코딩 테스트 문제를 풀며, 풀었던 문제에 대한 회고와 다른 풀이 방법을 알아보며, 알아가고자 합니다.

문제에 대해 먼저 알아보겠습니다.

문제

문자열 my_string과 두 정수 m, c가 주어집니다.

my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.

입출력 예시

my_string: “ihrhbakrfpndopljhygc”

m: 4

c: 2

result: “happy”

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

1열2열3열4열
ihrh
bakr
fpnd
oplj
hygc

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

문제에 대한 나의 풀이

class Solution {
    public String solution(String my_string, int m, int c) {
        char[] arr = my_string.toCharArray();
        char[] arr1 = new char[arr.length/m];
        int j = 0;
        for(int i = c-1; i < arr.length; i+=m){
            arr1[j++] = arr[i];
        }
        return new String(arr1);
    }
}
풀이 설명

행렬을 정립하기 위해 우리는 먼저 문자열 타입을 Char 타입으로 바꿔 배열로 저장할 필요가 있습니다.

이에 char[] 타입의 arr에 my_string을 toCharArray()를 통해 저장합니다.

이후 return 값을 저장할 arr1도 동일한 타입으로 지정 후, 배열의 크기는 arr의 길이에서 몇 열까지인지 알 수 있으면 됩니다.

따라서 나눈 다음 반복문을 선언하여 문제에서 요구하는 방식으로 조건을 설정하고 행렬에서 특정한 idx의 요소를 저장하여 반환했습니다.