프로그래머스 세로 읽기

KIMYEONGJUN·2026년 6월 5일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

먼저 solution 메서드는 my_string이라는 문자열과 한 줄에 적을 글자 수 m, 그리고 세로로 읽을 열 위치 c를 입력값으로 받는다.
StringBuilder answer를 통해 결과 문자열을 효율적으로 누적할 준비를 한다.
문자열의 길이를 m으로 나눈 값만큼 반복문을 돌면서, 각 줄마다 세로 c번째에 해당하는 글자의 인덱스를 계산한다.
인덱스 계산 공식은 i * m + (c - 1)이며, 여기서 i는 현재 줄 번호(0부터 시작), (c - 1)은 0부터 시작하는 인덱스로 조정한 열 위치이다.
계산된 인덱스의 문자를 answer에 추가한다.
반복이 끝나면 완성된 문자열을 answer.toString()으로 반환한다.

코드로 구현

class Solution {
    public String solution(String my_string, int m, int c) {
        StringBuilder answer = new StringBuilder();
        for (int i = 0; i < my_string.length() / m; i++) {
            int index = i * m + (c - 1);
            answer.append(my_string.charAt(index));
        }

        return answer.toString();
    }
}

프로그래머스 코드

package programmers;

// 프로그래머스 세로 읽기
public class Main41 {
    public static String solution(String my_string, int m, int c) {
        StringBuilder answer = new StringBuilder();
        for (int i = 0; i < my_string.length() / m; i++) {
            int index = i * m + (c - 1);
            answer.append(my_string.charAt(index));
        }
        return answer.toString();
    }

    public static void main(String[] args) {
        // 테스트 예제 1
        String my_string1 = "ihrhbakrfpndopljhygc";
        int m1 = 4;
        int c1 = 2;
        System.out.println(solution(my_string1, m1, c1));  // 결과: happy

        // 테스트 예제 2
        String my_string2 = "programmers";
        int m2 = 1;
        int c2 = 1;
        System.out.println(solution(my_string2, m2, c2));  // 결과: programmers
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글