[프로그래머스/Java] Lv.0 x 사이의 개수

febCho·2024년 3월 15일
0

코딩테스트

목록 보기
86/253
post-thumbnail

문제

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

- 제한사항

  • 1 ≤ myString의 길이 ≤ 100,000
  • myString은 알파벳 소문자로 이루어진 문자열입니다.

풀이

입출력 예시 ["o", "oo", "o", "", "o", ""]에 따라, 문자열 구분 기준인 "x"가 가장 마지막일 경우 빈 문자열이 담겨야 했다.

그래서 split()을 활용해 구분자를 기준으로 배열을 반환 받은 다음, endsWith()를 활용해 해당 경우엔 Arrays.copyOf(list, list.length + 1);길이를 한 칸 더 늘려 배열을 복사했다. 그 다음 해당 문자열 배열의 경우 null로 초기화 되기 때문에 nullpointerexception이 발생하지 않도록 빈 문자열로 값을 변경해 준다.

원소의 길이 값이 담긴 정수형 배열을 선언, for문으로 길이 값을 읽어 저장한 다음 반환하면 된다.

import java.util.Arrays;

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

결과

profile
Done is better than perfect.

0개의 댓글