문제 :
내 풀이 :
function solution(food) {
let result = '';
for(let i = 1; i < food.length; i++) {
result += String(i).repeat(Math.trunc(food[i] / 2));
}
const reversedResult = result.split('').reverse().join('');
result = result + "0";
return result + reversedResult;
}
1. 먼저 result라는 빈 문자열을 선언한다. 이 변수는 최종적으로 반환할 문자열을 만들기 위해 선언하였다.
2. 여기서 반복문이 시작된다.
for (let i = 1; i < food.length; i++) {
result += String(i).repeat(Math.trunc(food[i] / 2));
}
i = 1부터 food.length까지 반복한다.
각 반복에서 food[i] 값의 절반(소수점 이하 버림)을 계산한 후, 그 값만큼 i를 문자열로 변환하여 result에 추가한다.
예를 들어, food[i] = 5라면 Math.trunc(food[i] / 2)는 2가 되고, String(i).repeat(2)는 '2'가 두 번 반복된 '22'가 된다.
즉, 각 food[i] 값의 절반에 해당하는 숫자 i를 반복해서 문자열로 추가한다.
3. reversedResult는 result를 반전시킨 문자열이다.
const reversedResult = result.split('').reverse().join('');
result.split('')는 result 문자열을 한 글자씩 쪼개어 배열로 만든다.
reverse()는 배열의 순서를 뒤집는다.
join('')은 배열을 다시 문자열로 합친다.
4. result 문자열에 '0'을 추가합니다. 즉, 가운데에 0을 삽입한다.
result = result + "0";
5. 마지막으로, 원래의 result에 reversedResult를 이어 붙여서 최종 결과를 반환한다.
return result + reversedResult;
}
예시
food = [0, 3, 4, 6] 이라고 가정한다.
- i = 1일 때: Math.trunc(3 / 2)는 1이므로, '1'이 result에 추가된다. 현재 result = '1'
- i = 2일 때: Math.trunc(4 / 2)는 2이므로, '2'가 두 번 반복되어 result = '12'
- i = 3일 때: Math.trunc(6 / 2)는 3이므로, '3'이 세 번 반복되어 result = '12333'
다음으로 result를 반전시키면 reversedResult = '33321'이 된다.
- 그 후, result = '12333' + '0'이 되어 '123330'이 된다.
- 마지막으로 result + reversedResult = '123330' + '33321'이 되어 최종적으로 '12333033321'이 반환된다.
'프로그래머스' 카테고리의 다른 글
[JavaScript] 같은 숫자는 싫어 - 프로그래머스 (0) | 2024.09.27 |
---|---|
[JavaScript] 명예의 전당 - 프로그래머스 (1) | 2024.09.25 |
[JavaScript] 가장 가까운 같은 글자 - 프로그래머스 (1) | 2024.09.12 |
[JavaScript] 두 개 뽑아서 더하기 - 프로그래머스 (0) | 2024.09.10 |
[JavaScript] 크기가 작은 부분 문자열 - 프로그래머스 (3) | 2024.08.28 |