how to convert String statement to an array by Split <프로그래머스>

LOST& FOUND·2024년 4월 23일

문자열을 입력받아서 문자 하나하나를 원하는 횟수만큼 반복하기

첫번째 시도 : 문자열을 배열로 받아서 그대로 반복문 돌리기
실패

public class Main {
    static SimpleInput si;
    public static void main(String[] args) {
        String my_string = si.input("문자 영어로 입력 : ");
        int n = Integer.parseInt(SimpleInput.input("반복할 횟수 입력 : "));

            String answer = "";
            //글자 배열로 받기
            ArrayList<String> answers = new ArrayList<>();
            answers.add(my_string);

            //받은 글자별 반복누적
            for (String s : answers) {
                for (int j = 1; j <= n; j++) {
                    answer += s;
                    answer.toString();
                }
            }
        System.out.println(answer);
            return;
    }
}

이렇게 써도, 결국 배열 안에 String이 한글자씩 저장되지 않는다.

전체의 string이 저장되기 때문에 아래와 같은 결과가 나온다.

받은 문자열을 배열로 나누는 메서드는 Split() 이다.
split("문자열 안의 한 문자", int 첫번째 요소의 문자를 분기로 얼마나 나눌지의 횟수)이다.

@를 기점으로 @가 아무리 많아도 3번까지만 나누고 싶을때는 배열의 index가 낮은 순부터 문자가 삭제되며 나누어진다.

// Java program to demonstrate working of split(regex,
// limit) with high limit.

public class GFG {
	public static void main(String args[])
	{
		String str = "geekssforgeek@ss";
		String[] arr = str.split("");

		for (String a : arr)
			System.out.println(a);
	}
}

""을 기점으로 문자열을 받은 배열의 길이만큼 나누고 싶으면 문자열 하나씩 나눌 수 있다.
(왜 공백을 기점으로 한문자씩 자동으로 나눠지는지 알고리즘 파악을 못했다. 추후 정리하여 수정업로드 하겠다.)

두번째 시도 : 위의 방법에서 split을 추가하여 반복문 돌리기 성공

class Solution {
    public String solution(String my_string, int n) {
    
        String answers = "";
        //문자열 하나하나 요소별 나누어 배열에 넣기
        String [] arr = my_string.split("");
        
        for (String a : arr) {
            for (int i = 1; i <= n; i++) {
            answers += a;
            }    
        }
        return answers;
    }
}

참고링크
https://www.geeksforgeeks.org/split-string-java-examples/

profile
지금은 코부작

0개의 댓글