Programmers '푸드 파이트 대회' 문제 보러가기
food 배열을 순회하며 수웅이가 먹을 음식의 배치를 먼저 작성하고,
해당 배치를 뒤집어 0과 함께 앞서 작성된 문자열에 덧붙였다.
function solution(food) {
var answer = '';
var reversed ='';
// food 배열을 순회한다.
for(let i=1;i<food.length;i++){
// 개수 내 가장 큰 짝수의 절반 만큼 음식 수를 표시한다
for(let j=0;j<Math.floor(food[i]/2); j++){
answer = answer.concat(String(i));
}
}
// 입력한 배열을 복사하여 reverse한다
reversed = answer.split("").reverse();
reversed = reversed.join("");
// 입력한 배열에 0을 입력하고, reverse된 배열을 붙인다.
answer = answer.concat('0');
answer = answer.concat(reversed);
return answer;
}
📌 split() - split(separator?, limit?)
; String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다.
- separator가 빈 문자열('')일 시, str의 각각의 문자가 배열의 원소 하나씩으로 변환된다.
- 주어진 문자열을 separator마다 끊은 부분 문자열은 담은 배열을 반환한다.
📌 join() - arr.join([separator])
; 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
- separator
생략 시, 배열의 요소들이 쉼표로 구분된다.
빈 문자열('')일 시, 모든 요소들이 사이에 아무 문자도 없이 연결된다.- 배열의 요소를 모두 연결한 하나의 문자열을 반환한다.
📌 concat() - array.concat([value1[, value2[, ...[, valueN]]]])
; 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환한다.
- 기존 배열을 변경하지 않는다.
- 추가된 새로운 배열을 반환한다.
- value1 ~ valueN 인자 생략 시, 기존 배열의 얕은 복사본 반환
📌 reverse() - a.reverse()
; 배열의 순서를 반전한다.
- 순서가 반전된 배열을 반환한다.
- 호출한 배열을 반전하고 원본 배열을 변형하여 그 참조를 반환한다.
*Won-hyeok Jung 님의 코드를 참고하였습니다.
📌 repeat() - str.repeat(count);
; 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다.
- count: 문자열을 반복할 횟수
function solution(food) {
var answer = '';
// food 배열을 순회한다.
for(let i=1;i<food.length;i++){
// 개수 내 가장 큰 짝수의 절반 만큼 음식 수를 표시한다
answer +=String(i).repeat(Math.floor(food[i]/2));
}
// 입력한 배열에 0을 입력하고, reverse된 배열을 붙인다.
return answer+'0'+[...answer].reverse().join('');
}