🔥 CodingTest/프로그래머스

[Lv.0] x 사이의 개수

김_수댕 2024. 4. 10. 10:52
반응형

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

✅ 문제

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

제한 사항

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

입출력 예

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

🔎 풀이 방법

배열을 순회하다가 x를 만나면 그 이전의 값들을 반환해준다.

마지막에는 x를 만나지 않을 수도 있으므로 for문 외부에서 한 번 더 push 해준다.

💻 코드

function solution(myString) {
    let answer = [];
    let tempArr = [];
    for(let i = 0; i < myString.length; i++) {
        if(myString.slice('')[i] === "x"){
            answer.push(tempArr.length);
            tempArr = [];
        } else {
            tempArr.push(myString.slice('')[i]);
        }
    }
    answer.push(tempArr.length);
    return answer;
}

👀 추가 공부

chat gpt 코드 깔끔하게 정리해 달라고 부탁. for-of

function solution(myString) {
    const answer = [];
    let tempCount = 0;

    for (let char of myString) {
        if (char === "x") {
            answer.push(tempCount);
            tempCount = 0;
        } else {
            tempCount++;
        }
    }
    answer.push(tempCount);
    return answer;
}

map() 사용

function solution(myString) {
    return myString.split('x').map(v => v.length);
}
반응형