
내가 생각했을때 문제에서 원하는부분
문자열 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
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.