우선 반복되지 않는 물은 미리 정답 배열에 넣어줬고,
반복문을 두번 겹쳐 사용하여, 해당 인덱스를 인덱스의 수만큼 배열에 넣는 작업을 해줬다
.push와 .unshift를 번갈아 사용하며 앞뒤로 넣어줌
그리고 만약 음식의 개수가 1개 미만 (즉 j가 1 미만)일 때는 아무일도 일어나지 않게 했다.
function solution(food) {
let answer = [0]; //물
for (let i=1; i<food.length) {
let j = Math.floor(food[i] / 2); //넣는 양
if (j < 1) {
} else {
while (j > 0) {
j--;
//배열에 넣기
answer.push(j);
answer.unshift(j);
}
}
}
return answer.join('');
}
틀렸다.
자잘하게 실수를 많이 했다..
우선 j가 아닌 i를 배열에 추가해야하고
i++도 넣어야 한다.
그리고 조건문은 필요없다. while이 이미 가지고 있다.
function solution(food) {
let answer = [0]; //물
for (let i=1; i<food.length; i++) {
let j = Math.floor(food[i] / 2); //넣는 양
while (j > 0) {
//배열에 넣기
answer.push(i);
answer.unshift(i);
j--;
}
}
return answer.join('');
}
또 틀렸다!
순서대로 밀어넣어서, 12233033221이 나와야 하는데 33221012233 이 나왔다.
function solution(food) {
let answer = [0]; //물
for (let i=food.length; i>=1; i--) {
let j = Math.floor(food[i] / 2); //넣는 양
while (j > 0) {
//배열에 넣기
answer.push(i);
answer.unshift(i);
j--;
}
}
return answer.join('');
}
드디어 성공,,
성급하게 풀지 않기
다른 사람 풀이
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('');
}
깔끔하고 재밌다!
'코딩 테스트 > test_javaScript' 카테고리의 다른 글
[코딩테스트/javaScript] 명예의 전당 (0) | 2025.01.12 |
---|---|
[코딩테스트/javaScript] 콜라 문제 (0) | 2025.01.11 |
[코딩테스트/javaScript] 가장 가까운 같은 글자 (0) | 2025.01.09 |
[코딩테스트/javaScript] 두 개 뽑아서 더하기 (0) | 2025.01.08 |
[코딩테스트/javaScript] k번째 수 (0) | 2025.01.07 |