06
12

1. 문제링크

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

 

2. 입 출력 예시

food result
[1, 3, 4, 6] '1223330333221'
[1, 7, 1, 2] '111303111'

 

3. 풀이

function solution(food) {
    // 짝수가 아니면 제외한다. 둘이서 먹을 수 없다.
    const useFood = food.map((el) => Math.floor(el / 2));
    
    // 빈 배열을 선언하고,
    const result = [];
    
    // 가장 앞의 물인 0을 제외, 반복문을 통해 물을 뺀 index + 1을 result에 push한다.
    const arr = useFood.slice(1).map((el, index) => {
        let i = 0;
        while(i < el) {
            i++;
            result.push(index + 1)
        }
    })
    
    // 그리고 완성된 result를 복사하여 반대로 뒤집는다.
    // 여기서 result를 복사하지 않으면 원본 배열도 뒤집히기 때문에 복사를 꼭 해준다.
    const reverseArr = result.slice().reverse();
    
    // 물인 0을 push하고,
    result.push(0)
    // result와 뒤집힌 result를 합친후 join으로 string형태로 바꿔준다.
    return result.concat(reverseArr).join('');
}

 

  • isNull은 너무 간단하여 다시금, 간단한 문제도 풀어보았다.
  • while문을 쓴 게 아쉽다. map이나 reduce로 한 번에 한 줄로도 처리할 수 있을 법하다.
COMMENT