프로그래머스 Lv.0 세로 읽기

문자열 my_string과 두 정수 m,c가 주어진다.
my_stirng을 한 줄에 m글자씩 가로로 적었을 때
왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return하라.
** 풀이 방법
my_string 문자열을 문자 하나하나씩 접근할 것이므로
my_string의 길이만큼 for문을 돌린다.
for (int i=0; i<my_string.length(); i++) {
char ch = my_string.charAt(i);
...
}
문자 m개씩 잘라야 하므로
순서대로 answer에 담다가
i+1의 값을 m으로 나눴을 때 나머지가 0이라면
지금까지 담았던 answer문자열을 list에 저장한다.그리고 다시 문자열을 비워서 my_string의 길이가 끝날 때까지 반복한다.
List<String> list = new ArrayList<>(); //m개씩 자른 문자열을 저장할 ArrayList
for (int i=0; i<my_string.length(); i++) {
char ch = my_string.charAt(i); //문자 하나하나씩 접근
if ((i+1) % m == 0) {
answer += ch;
list.add(answer); //m개씩 자른 문자열 저장하기
answer = ""; //answer 비워서 다시 저장할 준비
} else
answer += ch; //m개 전까지 answer문자열에 더하기
}
이번엔 이중 for문을 통해
list의 i번째 원소를 문자로 하나하나씩 접근한다.
원소의 문자위치가 c와 같다면최종 결과인 res 문자열에 더해준다.
for (int i=0; i<list.size(); i++) {
for (int j=0; j<list.get(i).length(); j++) {
char ch = list.get(i).charAt(j);
if (j+1 == c)
res += ch;
}
}
<> 전체 코드 </>
import java.util.*;
class Solution {
public String solution(String my_string, int m, int c) {
String answer = ""; String res = "";
List<String> list = new ArrayList<>();
for (int i=0; i<my_string.length(); i++) {
char ch = my_string.charAt(i);
if ((i+1) % m == 0) {
answer += ch;
list.add(answer);
answer = "";
} else
answer += ch;
}
for (int i=0; i<list.size(); i++) {
for (int j=0; j<list.get(i).length(); j++) {
char ch = list.get(i).charAt(j);
if (j+1 == c)
res += ch;
}
}
return res;
}
}
반응형
'개발로그 > 알고리즘' 카테고리의 다른 글
프로그래머스 Lv.1 가장 가까운 같은 글자 (0) | 2023.07.25 |
---|---|
프로그래머스 Lv.0 간단한 식 계산하기 (0) | 2023.07.25 |
프로그래머스 Lv.0 숨어있는 숫자의 덧셈 (2) (0) | 2023.07.24 |
프로그래머스 Lv.0 연속된 수의 합 (0) | 2023.07.24 |
프로그래머스 Lv.0 등수매기기 (0) | 2023.07.23 |
댓글