[프로그래머스-기초] x 사이의 개수

JE·2023년 12월 21일
0

코테/코플릿

목록 보기
37/57

x 사이의 개수

문제 설명

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

제한사항

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

입출력 예

myStringresult
"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 합니다.

💻 내가 작성한 코드

function solution(myString) {
    const arr = myString.split('x')
    return arr.map(el => el.length)
}

문제에서 'x'를 기준으로 문자열을 나누고 각 문자열을 길이 값으로 반환하는 문제였다.

split는 해당 조건(문자열)을 기준으로 배열을 만들어 준다.
arr라는 변수에 split메소드를 활용해 문자열을 'x'기준으로 나눠준 배열을 할당한다.

map메소드를 사용해 배열을 순회하고 요소의 길이를 반환해 주었다.

function solution(myString) {
    return myString.split('x').map(el => el.length)
}

이렇게 한줄로 코드를 작성할 수 있지만
가독성이 떨어지는 것 같아
const arr = myString.split('x') 'x' 문자를 기준으로 나눈 배열을 따로 분리해 줬다.

💻 다른 사람이 작성한 코드

const solution = (myString) => {
    const arr = myString.split('x');
    return arr.reduce((a,c)=>[...a,c.length],[]);
}

map메소드를 사용하신 분이 많으셨는데
이분은 reduce메소드를 사용해 코드를 작성하셔서 가져와 봤다.

profile
[프론트 애송이] 작은 깨달음도 기록하기

0개의 댓글