주어진 조건에 따하 정수 배열 food가 주어지며 이 배열은 칼로리가 적은 순서대로 음식의 양이 나타냄, 각 원소는 해당 음식의 수를 나타내어 둘이서 먹을 음식의 배치를 리턴
나의 풀이
function solution(food) {
var answer = '';
for(let i = 0; i < food.length; i++) {
var count = Math.floor(food[i] / 2);
answer += i.toString().repeat(count);
}
var re = answer.split('').reverse().join('');
return answer + "0" + re;
}
food 배열을 for문으로 돌린다
각 요소에 대해 2로 나눈 후 내림을 적용 (floor)
answer 문자열에 i를 count만큼 추가한다
re 변수에 answer 문자열 리버스 저장후 리턴
다른 풀이
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('');
}
짧게 리팩토링
function solution(food) {
let player1 = [];
let player2 = [];
let repeat = 0;
for (let i = 1; i <= food.length; i++) {
if (food[i] > 1) {
repeat = Math.floor(food[i] / 2);
for (let j = 0; j < repeat; j++)
player1.push(i)
for (let k = 0; k < repeat; k++)
player2.unshift(i)
}
}
player1.push(0);
player1 = player1.concat(player2);
return player1.join("");
}