inblog logo
|
👨🏻‍💻DriedPollack's Blog
    💡Coding Test☕Java

    [programmers] x 사이의 개수 - Java

    문자열 "myString"을 문자 "x"를 기준으로 나누어 각각의 길이를 저장한 배열을 반환하는 solution 함수를 작성해야 합니다. ArrayList와 for문을 사용하여 문제를 해결할 수 있으며, stream을 이용하여 배열로 변환할 수 있습니다.
    Jan 17, 2024
    [programmers] x 사이의 개수 - Java

    문제 설명

    문자열 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 합니다.

    solution.java

    import java.util.ArrayList; class Solution { public int[] solution(String myString) { ArrayList<Integer> answer = new ArrayList<Integer>(); int length = 0; for(int i=0; i<=myString.length(); i++){ if(i==myString.length()){ answer.add(length); break; } if(myString.charAt(i)=='x'){ answer.add(length); length = 0; }else{ length++; } } return answer.stream().mapToInt(i -> i).toArray(); } }
     

    핵심 키워드

    • ArrayList를 사용하기 위해선 java.util.ArrayList를 import 해줘야 한다.
    • String 타입의 list를 배열로 변환할 때는 toArray() 메소드를 사용하면 되지만, 원시 타입의 list를 배열로 변환할 경우 toArray() 메소드를 사용할 수 없다.
      • 이 경우 for문을 통해 리스트의 원소들의 값을 get(i).intValue() 메소드를 통해 가져오거나
      • list.stream().mapToInt(i -> i).toArray() 와 같이 stream을 이용해 값을 가져올 수 있다.
     

    결론!

    해당 문제를 풀면서 각 문자를 기준으로 사이에 있는 문자의 개수를 파악하는데 반복문을 사용해서 해결을 할 수 있었다. 또한 stream의 사용법을 익힐 수 있었다.
     
    Share article

    👨🏻‍💻DriedPollack's Blog

    RSS·Powered by Inblog