728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/134240
문제 풀이 방법
- 배열 food의 index 값이 음식의 칼로리고, 값은 그 음식의 갯수이다.
- 음식의 갯수는 무조건 짝수로되어 물의 기준으로 양 옆에 같은 수의 음식을 놓을 수 있어야 한다.
음식의 갯수가 홀수인 경우는 1개를 빼주어 짝수로 만들고 양 옆에 동일한 갯수로 위치시킨다.
또한 음식의 갯수가 1인 경우는 사용하지 않는다. - 한쪽에 놓을 수 있는 food[i]의 갯수를 구한 다음,
문자열에 추가해줘서 왼쪽의 배치도 부터 완성시킨다. - 그런다음 가운대에 0이 있어야하므로 0을 추가한 다음
왼쪽 배치도를 거꾸로 만들어 대칭을 이루는 배치도를 합해주었다.
코드
const solution = (food) => {
let foodSt = ''
food.forEach((e, i) =>{
if(i > 0){
const num = e%2 === 0 ? e/2 : (e-1)/2;
if(num > 0){
for(let j=0; j<num; j++){
foodSt += i;
}
}
}
});
return foodSt + 0 + [...foodSt].reverse().join('');
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 2018 KAKAO BLIND RECRUITMENT / [3차] n진수 게임 (0) | 2023.08.24 |
---|---|
[JS] 2Level / 연습문제 / 할인 행사 (0) | 2023.08.22 |
[JS] 3Level / 2018 KAKAO BLIND RECRUITMENT / [1차] 캐시 (0) | 2023.07.18 |
[JS] 3Level / 탐욕법 / 단속카메라 (0) | 2023.07.18 |
[JS] 2Level / 연습문제 / 행렬의 곱셈 (0) | 2023.07.10 |