CodingTest

Day14: x 사이의 개수, 홀수 vs 짝수, 공백으로 구분하기, rny_string, 배열에서 문자열 대소문자 변환하기

curious week 2025. 9. 7. 13:44

x 사이의 개수

x를 기준으로 나눴을 때 나눠진 문자열의 각각의 길이

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

다른 답:

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

홀수 vs 짝수

배열의 짝수 번째 원소의 합과 홀수 번째의 합 중 큰 값을 리턴, 같으면 그 값을 리턴

function solution(num_list) {
    let even = 0
    let odd = 0
    for(let i = 0; i < num_list.length; i++) {
        if(i % 2 === 0) even += num_list[i]
        if(i % 2 === 1) odd += num_list[i]
    }
    return even >= odd ? even : odd
}

 다른 답:

function solution(num_list) {
    let odd = 0;
    let even = 0;

    num_list.forEach((x,i) => i%2 == 0 ? even += x : odd += x);


    return Math.max(odd, even);
}

공백으로 구분하기

문자열을 받아 단어별로 나눠 배열로 받기 "i like" => ["i", "like"]

function solution(my_string) {
    return my_string.split(' ').filter(v => v.length >= 1)
}

다른 답:

function solution(my_string) {
    return my_string.trim().split(/ +/);
}
const solution = my_string => my_string.match(/[^\s]+/g);

rny_string

"m"을 "rn"으로 바꾸기

function solution(rny_string) {
    return [...rny_string].map(v => v == 'm' ? 'rn' : v).join('')
}

다른 답:

function solution(rny_string) {
    return rny_string.replaceAll(/m/g, "rn");
}
const solution = r => r.replaceAll('m', 'rn')

배열에서 문자열 대소문자 변환하기

문자열 배열에서 홀수번째 인덱스의 문자열은 대문자로, 짝수번째는 소문자로 바꿔서 리턴

function solution(strArr) {
    let a = strArr
    for(let i = 0; i < strArr.length; i++) {
        if(i % 2 === 1) {
            a[i] = a[i].toUpperCase()
        } else {
            a[i] = a[i].toLowerCase()
        }
    }
    return a
}

다른 답:

function solution(strArr) {
    return strArr.map((v, i) => i % 2 === 0 ? v.toLowerCase() : v.toUpperCase());
}
const solution = (strs) => strs.reduce(
    (acc, cur, idx) => [...acc, idx % 2 === 0 ? cur.toLowerCase() : cur.toUpperCase()], []
)