코딩테스트 연습

x 사이의 개수

신재은👩🏼‍💻 2024. 4. 11. 01:04

문제 설명

문자열 myString이 주어집니다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

 

제한사항

  • 1 ≤ myString의 길이 ≤ 100,000

 

입출력 예

myString result
"oxooxoxxox" [1, 2, 1, 0, 1, 0]
"xabcxdefxghi" [0, 3, 3, 3]

import java.util.*;

class Solution {
    public int[] solution(String myString) {
        
        String[] parts = myString.split("x", -1);
        int answerlength = parts.length;
        int[] answer = new int[answerlength];
        
        for(int i=0; i<parts.length; i++) {
            answer[i] = parts[i].length();
        }
        return answer;
    }
}


로직을 짠 뒤 특정 메서드나 저 위의 -1같은 특이 사항을 모르겠으면 gpt한테 물어서 풀고 있다.

 

다른 사람의 풀이를 봤을 때 

 

import java.util.Arrays;

 

class Solution {

    public int[] solution(String myString) {

 

        return Arrays.stream(myString.split("x", myString.length()))

            .mapToInt(x -> x.length())

            .toArray();

    }

}

 

이런 게 있던데 myString.length()처럼 양수인 값이 들어가면 split된 후 리턴되는 값에서 맨 마지막의 ""은 출력이 안 될텐데

프로그래머스에서 코드 실행을 하면 출력이 된다...

이 부분은 더는 모르겠다.

 

import java.util.*;

 

class Solution {

    public Integer[] solution(String myString) {

        return Arrays.stream(myString.split("x", -1)).map(String::length).toArray(Integer[]::new);

    }

}

 

이건 좀 기발했다...