프로그래머스/JAVA/잘라서 배열로 저장하기

Seoung Young Oh·2022년 12월 26일
0

프로그래머스

목록 보기
77/105
post-thumbnail

문제설명

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ my_str의 길이 ≤ 100
  • 1 ≤ n ≤ my_str의 길이
  • my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

입출력 예

my_str과nresult
"abc1Addfggg4556b"6["abc1Ad", "dfggg4", "556b"]
"abcdef123"3["abc", "def", "123"]

입출력 예 설명

입출력 예 #1

  • "abc1Addfggg4556b" 를 길이 6씩 잘라 배열에 저장한 ["abc1Ad", "dfggg4", "556b"]를 return해야 합니다.

입출력 예 #2

  • "abcdef123" 를 길이 3씩 잘라 배열에 저장한 ["abc", "def", "123"]를 return해야 합니다.

유의사항

  • 입출력 예 #1의 경우 "abc1Addfggg4556b"를 길이 6씩 자르면 "abc1Ad", "dfggg4" 두개와 마지막 "556b"가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.

풀이

List자료형과 Stringbuffer를 사용하여 해결했다.

List를 사용한 이유이는 선언시에 길이를 정해줄 필요가 없고, 요소 추가나 제거가
간편해서다. 
StringBuffer는 문자열의 가공이 편리해서 사용하였다.

1. 빈 ArrayList를 선언, 주어진 문자열을 Stringbuffer에 append.
2. 주어진 길이n으로 문자열을 substring하고 list에 add.
3. 해당 길이만큼 replace를 이용하여 문자열에서 제거.
4. 반복.
5. 남은 문자열의 길이가 n보다 작거나 같을 때, 남은 문자열을 list에 add해준 뒤, 반복문 종료.
import java.util.ArrayList;
import java.util.List;

class Solution {
	public List<String> solution(String my_str, int n) {
		
        List<String> list = new ArrayList<>();
		
        StringBuffer sb = new StringBuffer(my_str);

		for (int i = 0; i < my_str.length(); i++) {
			if (sb.length() > n) {
				list.add(sb.substring(0, n));
				sb.replace(0, n, "");
				System.out.println(sb);
			} else {
				list.add(sb.toString());
				break;
			}
		}
		return list;
	}
}

번외 코드: 정규식으로 문자열 절삭

정규식으로 n만큼 길이로 자르고 나머지는 그대로 배열에 추가한다. 식이 간단해서 마음에 들지만`
?<=\\G 이부분을 이해하지 못해 사용하지 않았다. 나중에 찾아보기 위해 이곳에 기록해 둔다.
class Solution {
    public String[] solution(String my_str, int n) {
        String[] answer = my_str.split("(?<=\\G.{"+n+"})");
        return answer;
    }
}

참고

0개의 댓글

관련 채용 정보