본문 바로가기

코테/프로그래머스

[프로그래머스] 푸드 파이트 대회

728x90

[Level 1] 푸드 파이트 대회

문제 링크

구분

코딩테스트연습 > 연습문제

풀이 요약

주어진 음식의 양을 칼로리 순서대로 배열하여 두 선수가 대회 조건에 맞게 음식을 공평하게 먹을 수 있도록 배치한 문자열을 반환하는 문제

나의 풀이

function solution(food) {
    let answer = "";
    for(let i=1; i<food.length; i++){
        answer+=String(i).repeat(Math.floor(food[i]/2))
    }
    return answer + 0 + [...answer].reverse().join("");
}

food 배열의 두 번째 요소부터 마지막 요소까지 for문으로 순회하면서 각 음식의 개수를 2로 나눈 몫만큼 해당 음식 번호를 answer에 추가했습니다.

이렇게 함으로써 각 음식 번호가 절반만큼 반복되어 answer 문자열에 쌓이게 됩니다.

 

예를 들어, food = [1, 3, 4, 6]이 주어진 경우,

  1. food [1]은 3이므로, 1을 Math.floor(3 / 2)번 반복하여
    answer = "1”
  2. food [2]은 4이므로, 2를 Math.floor(4 / 2)번 반복하여
    answer = "122”
  3. food [3]은 6이므로, 3을 Math.floor(6 / 2)번 반복하여
    answer = "122333”이 되고
  4. 문자열 끝에 0을 추가하여 물을 놓고 이 문자열을 뒤집어서 join 메서드로 이어 붙이면 됩니다.

배운 점

처음에는 1,2,3을 어떻게 가져와야하는지 고민이 많았지만 음식 번호를 문자열로 변환하고 이를 반복하여 원하는 형태의 문자열을 만들기 위해 String(i)를 사용하여 음식번호를 문자열로 변환하는 방법을 알게 되었습니다!

728x90