문자열
my_string
과 두 정수 m
, c
가 주어집니다. my_string
을 한 줄에 m
글자씩 가로로 적었을 때 왼쪽부터 세로로 c
번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.입출력 예
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);
}
}

설명
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