본문 바로가기
Study with me/프로그래머스 L0 마스터하기

프로그래머스 - L0 x사이의개수

by 외계나무 2023. 12. 29.

프로그래머스 - level 0 x 사이의 개수

완전 Brute-force... 되는대로 풀기

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

조금 더 머리 쓴 버전...

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

 

stream 사용한 타인의 코드. 

import java.util.*;
class Solution {
    public int[] solution(String myString) {
        return Arrays.stream(myString.split("x", myString.length())).mapToInt(s -> s.length()).toArray();

    }
}

split() 사용에서 두번째 파라미터로 int limit을 지정할 수 있다는 것을 깜박한... (limit 이하의 개수로 분리해줌)

사실 mapToInt도 잊어버리고 map으로 했다가 한 번 실패했었음 ㅋㅋㅋ