inblog logo
|
jjack1
    Java프로그래머스코딩테스트

    [프로그래머스] 49. 세로 읽기

    최재원's avatar
    최재원
    Apr 10, 2025
    [프로그래머스] 49. 세로 읽기
    💡
    문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.
    💡

    제한사항

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

    입출력 예

    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"를 return 합니다.
    입출력 예 #2
    • 예제 2번의 my_string은 m이 1이므로 세로로 "programmers"를 적는 것과 같고 따라서 1열에 적힌 글자를 세로로 읽으면 programmers입니다. 따라서 "programmers"를 return 합니다.
     

    코드

    class Solution { public String solution(String my_string, int m, int c) { char[] charArr = new char[my_string.length()/m]; for(int i = 0; i < (my_string.length()/m); i++) { charArr[i] = my_string.charAt(i * m + (c - 1)); } return new String(charArr); } }
    notion image

    설명

    my_string / m을 하면 줄 수를 구할 수 있다.
    즉, 문자열을 m글자씩 잘라서 한 줄에 적었을 때, 총 몇 줄이 되는지 알 수 있다.
    예를 들어 첫 번째 예시를 보면,
    • my_string = "ihrhbakrfpndopljhygc"
    • m = 4
      • → 줄 수는 20 / 4 = 5줄
    이렇게 5줄로 나누면 각 줄은 4글자씩 되고,
    우리는 이 줄들을 위에서부터 아래로 읽으면서 왼쪽에서 c번째 열에 있는 글자만 골라서 새로운 문자열을 만들어야 한다.
    예를 들면:
    • 0번째 줄에서 가져올 글자의 인덱스는 0 * 4 + (c - 1)
    • 1번째 줄은 1 * 4 + (c - 1)
    • 2번째 줄은 2 * 4 + (c - 1)
    • ...
    즉, i * m + (c - 1) 이 공식대로 인덱스를 구해서
    그 위치의 글자를 하나씩 가져오면 된다.
    그렇게 가져온 글자들을 순서대로 붙이면
    문제에서 원하는 결과가 된다.
     
    Share article

    jjack1

    RSS·Powered by Inblog