[lv1] 푸드 파이트 대회

걸음걸음·2023년 3월 5일
0

Test

목록 보기
17/29

문제 링크

  • 한 선수는 왼쪽부터 오른쪽, 다른 선수는 오른쪽부터 왼쪽으로 진행
  • 중앙에는 물 배치
  • 양 선수가 먹는 음식의 종류와 양, 순서는 같아야 함
  • 칼로리가 낮은 순서대로 나타내는 정수배열 food [물, 칼로리가 낮은 음식1, 음식2, 음식3, ...]
  • 대회를 위한 음식 배치를 나타내는 문자열 return
    ex) food[1,3,4,6] => result "1223330333221"
function solution(food) {
    // food[1]부터 /2 해서 Math.floor, 그리고 해당 수만큼 i를 추가,
  	// 마지막 음식까지 넣으면 0, 그리고 reverse한 배열 추가
    const result = []
    for(let i = 1; i<food.length; i++){
        const bite = Math.floor(food[i]/2)
        if(bite > 0){
            result.push(`${i}`.repeat(bite))
        }
    }
    const reverse = [...result].reverse()
    return [...result, 0, ...reverse].join('')
}

다른 사람의 풀이

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은 0이면 빈문자열이 되므로 조건문이 필요가 없는 점. repeat안에 Math.floor을 작성.

profile
꾸준히 나아가는 개발자입니다.

0개의 댓글