프로그래머스

프로그래머스 20일차

ture403 2023. 6. 5. 10:59

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
반응형

잘라서 배열로 저장하기

문제

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

정답풀이

function solution(my_str, n) {
    let strArr = my_str.split("");
    
    let ans = [];
    
    while(strArr.length > 0){
        ans.push(strArr.splice(0,n).join(""));
    }
    
    return ans;
}

문자열 my_str을 split("")을 사용하여 한 글자씩 분할하여 배열 strArr로 변환합니다.
빈 배열 ans를 선언합니다. 이 배열은 분할된 문자열을 저장하기 위한 배열입니다.
while 루프를 사용하여 배열 strArr의 길이가 0보다 큰 동안 반복합니다.
strArr.splice(0, n)을 사용하여 배열 strArr에서 첫 번째부터 n개의 요소를 추출합니다. 추출된 요소들은 배열 형태로 반환됩니다.
추출된 요소들을 join("")을 사용하여 다시 하나의 문자열로 결합합니다.
결합된 문자열을 ans 배열에 추가합니다.
반복이 끝나면 ans 배열을 반환합니다.

7의 개수

문제

머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.

문제풀이

function solution(array) {
   const a = array.join("");
    const b = a.split("");
    let count = 0;
    for(let i=0; i<b.length; i++){
        if( 7 == b[i]) count ++
    }
    return count
};

 

배열 array를 join("")을 사용하여 문자열로 변환한 후 a 변수에 저장합니다.
문자열 a를 split("")을 사용하여 한 글자씩 분할하여 배열 b로 변환합니다.
변수 count를 0으로 초기화합니다. 이 변수는 배열 b에서 숫자 7의 등장 횟수를 계산하기 위해 사용됩니다.
for 루프를 사용하여 배열 b의 각 요소에 대해 반복합니다. 반복 변수는 i로 설정합니다.
현재 요소 b[i]와 숫자 7을 비교하여 같은 경우 조건을 만족합니다. (즉, 현재 요소가 7인 경우)
조건을 만족하는 경우, count 변수를 증가시킵니다.
반복이 끝나면 count 값을 반환합니다.

다항식 더하기

문제

한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다.


정답풀이

function solution(polynomial) {
    const polyArr = polynomial.split(" + ");
    
    let xNum = 0;
    let num = 0;
    
    polyArr.forEach((item) => {
        if(item.includes("x")){
            const xArr = item.split("x");
            
            if(xArr[0] === ""){
                xNum += 1;
            }
            
            if(xArr[0] !== ""){
                xNum += Number(xArr[0]);
            }
        }
        
        if(!item.includes("x")){
            num += Number(item);
        }
    })
    
    if(xNum !== 0 && num !== 0){
        if(xNum === 1){
            return `x + ${num}`;        
        }
        
        return `${xNum}x + ${num}`;    
    }
    
    if(xNum !== 0 && num === 0){
        if(xNum === 1){
            return "x";
        }
        
        return `${xNum}x`;
    }
    
    if(xNum === 0 && num !== 0){
        return `${num}`;
    }
    
    if(xNum === 0 && num === 0){
        return "0";
    }
}

문자열 polynomial을 " + "을 구분자로 사용하여 분할하여 배열 polyArr로 변환합니다. 이를 통해 다항식의 각 항을 개별적으로 처리할 수 있습니다.

변수 xNum과 num을 각각 0으로 초기화합니다. xNum은 x의 계수를 저장하기 위한 변수이고, num은 x가 없는 상수항을 저장하기 위한 변수입니다.

polyArr 배열을 forEach() 메서드를 사용하여 각 항에 대해 반복합니다.

현재 항 item이 x를 포함하는지 확인합니다. 포함하는 경우 조건을 만족합니다.

현재 항 item을 "x"를 구분자로 사용하여 분할하여 배열 xArr로 변환합니다. 이를 통해 계수와 x의 차수를 분리합니다.

xArr[0]이 비어있는 경우 (계수가 없는 경우), xNum을 1 증가시킵니다.

xArr[0]이 비어있지 않은 경우 (계수가 있는 경우), xNum에 Number(xArr[0])을 더합니다.

현재 항 item이 x를 포함하지 않는 경우, num에 Number(item)을 더합니다.

계수 xNum과 상수항 num이 모두 0이 아닌 경우, 다항식을 문자열 형태로 반환합니다. xNum이 1인 경우 "x + 상수항" 형태로 반환하고, 그 외의 경우 "계수x + 상수항" 형태로 반환합니다.

계수 xNum이 0이 아니고, 상수항 num이 0인 경우, xNum이 1인 경우 "x"를 반환하고, 그 외의 경우 "계수x"를 반환합니다.

계수 xNum이 0이고, 상수항 num이 0이 아닌 경우, 상수항인 num을 문자열 형태로 반환합니다.

계수 xNum과 상수항 num이 모두 0인 경우, "0"을 반환합니다.