programmers

[Programmers Level 1] 푸드파이트 대회 Javascript

냠냠맨 2022. 12. 14. 14:47

⚡문제정보

 

 

 


 

 

🔍접근방법

 

주어진 음식이 홀수인 경우에는 음식을 한개 버려야한다.

모든 참가자는 같은 칼로리의 음식을 같은 양으로 먹기 때문에

0을 기준으로 앞을 뒤집으면 뒤가 된다.

 

그렇기때문에 앞의 값만 다 구하면 뒤는 앞을 뒤집어주기만 하면 구현될것이다.

 


 

 

🔍나의 풀이

 

function solution(food) {
    let result = []
    for(i=1; i<food.length ; i++) {
        for(j=0;j<Math.floor(food[i]/2) ; j++ ) {
            result.push(i)
        }
    }
    return result.join('') + '0' + result.reverse().join('')
}

 

Math.floor()로 소수점을 버려주면서 답을 result에 더해주고

뒤는 reverse()시켜줬습니다.

그런데.. 다른 사람 풀이를 보니까 저처럼 for문을 두번 안써도

repeat()로 해결 가능하더라고요

 


 

🔍다른사람의 풀이

function solution(food) {
    let res = '';
    for (let i = 1; i < food.length; i++) {
        res += String(i).repeat(Math.floor(food[i]/2));
    }

    return res + '0' + [...res].reverse().join('');
}

 

디용대용.. 문자열 메서드에 너무 약하네요 제가

repeat()는 주어진 횟수만큼 반복해 붙인 문자열을 반환하는 메서드입니다.

반응형