극동대학교\AI컴퓨터공학과\JAVA/프로그래머스 코딩 기초 트레이닝

[프로그래머스, LV.0] x 사이의 개수

sundori 2024. 1. 6. 22:38

목차

    #1 x 사이의 개수

    문제 설명

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

    제한사항

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

    입출력 예

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

    입출력 예 설명

    입출력 예 #1

    • "x"를 기준으로 문자열을 나누면 ["o", "oo", "o", "", "o", ""]가 됩니다. 각각의 길이로 배열을 만들면 [1, 2, 1, 0, 1, 0]입니다. 따라서 [1, 2, 1, 0, 1, 0]을 return 합니다.

    입출력 예 #2

    • "x"를 기준으로 문자열을 나누면 ["", "abc", "def", "ghi"]가 됩니다. 각각의 길이로 배열을 만들면 [0, 3, 3, 3]입니다. 따라서 [0, 3, 3, 3]을 return 합니다.

    #2 알고리즘 및 코드

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class Main {
        public static void main(String[] args) {
            String myString = "xabcxdefxghi";
            Solution sl = new Solution();
    
            System.out.println(Arrays.toString(sl.solution(myString)));
        }
    }
    
    
    class Solution {
        public Object[] solution(String myString) {
            List<Integer> list = new ArrayList<>();
            int count = 0;
    
            for (int i = 0; i < myString.length(); i++) {
                if (myString.charAt(i) == 'x') {
                    list.add(count);
                    count = 0;
                } else {
                    count++;
                }
            }
    
            // 반복문이 종료되면서 마지막 문자열의 길이를 추가
            list.add(count);
    
            return list.toArray();
        }
    }
    • 이번 예를 들어 문제는 "xabcxdefxghi"를  'x'를 기준으로 문자열이 ["", "abc", "def", "ghi"]로 나누어지고, 각 문자열의 길이인 [0, 3, 3, 3]이 배열로 반환하면 된다.
    class Solution {
        public Object[] solution(String myString) {
            return Arrays.stream(myString.split("x"))
                    .map(String::length)
                    .toArray();
        }
    }
    • 이 코드는 먼저 myString을 "x"를 기준으로 나누어 문자열 배열로 만들고 각 문자열의 길이를 매핑하고, 최종적으로 배열로 반환한다. 결과적으로 ["", "abc", "def", "ghi"]를 기반으로 [0, 3, 3, 3]이 반환한다.