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]이 주어진 경우,
- food [1]은 3이므로, 1을 Math.floor(3 / 2)번 반복하여
answer = "1” - food [2]은 4이므로, 2를 Math.floor(4 / 2)번 반복하여
answer = "122” - food [3]은 6이므로, 3을 Math.floor(6 / 2)번 반복하여
answer = "122333”이 되고 - 문자열 끝에 0을 추가하여 물을 놓고 이 문자열을 뒤집어서 join 메서드로 이어 붙이면 됩니다.
배운 점
처음에는 1,2,3을 어떻게 가져와야하는지 고민이 많았지만 음식 번호를 문자열로 변환하고 이를 반복하여 원하는 형태의 문자열을 만들기 위해 String(i)를 사용하여 음식번호를 문자열로 변환하는 방법을 알게 되었습니다!
728x90
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2016년 (0) | 2024.07.29 |
---|---|
[프로그래머스] 추억 점수 (0) | 2024.07.29 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 (0) | 2024.07.25 |
[프로그래머스] 자릿수 더하기 (0) | 2024.07.25 |
[프로그래머스] 문자열 내 p와 y의 개수 (2) | 2024.07.25 |