코딩테스트/프로그래머스

[프로그래머스] Java :: x 사이의 개수

블로그 주인장 2024. 3. 23.

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/181867

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

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

 

제한 사항

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

 

입출력 예시

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

 

코드 구현

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

풀이

  1. 해당 문제에서 중점적으로 봐야할 부분은 문자 'x'를 기준으로 나눈다는 것입니다.
    1. 문자열을 나누는 메서드는 split("정규식") 으로 알고 있습니다.
    2. 위의 기본 방식으로 첫번째 입력인 "oxooxoxxox" 을 사용하면 마지막 데이터인 0이 제외된 [1, 2, 1, 0, 1] 이 반환됩니다.
    3. 여기서 사용할 수 있는 방식은 split("정규식, limit") 입니다.
      • limit가 0보다 큰 경우에는 limit의 개수만큼 split을 진행합니다.
      • limit이 0보다 작은 경우에는 맨 뒤의 빈 값에 대해 모두 spilit을 진행하도록 합니다.
      • 이를 통해 마지막 뒤의 빈 값을 추출하기 위해서 -1를 인자에 넣습니다.
  2. 문자열은 나눈 strings의 길이를 answer라는 int형 배열에 넣어서 초기화해줍니다.
  3. 초기화 이후에 strings.length를 answer에 넣어서 길이를 저장한 배열을 만들고 반환해줍니다.
반응형

댓글