# 내 풀이
function answer(mark) {
let result = 0;
let acc = 0;
for(let i = 0; i < mark.length; i++){
if(mark[i] != 0){
acc += mark[i];
}else{
acc = 0;
}
result += acc;
}
return result;
}
let input = [
[1, 0, 1, 1, 1, 0, 1, 1, 0, 0],
[1, 1, 0, 1, 1, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 0, 0, 1, 1, 0],
];
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} ${answer(input[i])}`);
}
# 강사님 풀이
function answer(mark) {
let result = 0;
let acc = 0;
for(let i = 0; i < mark.length; i++){
if(mark[i] != 0){
result += ++acc;
}else{
acc = 0;
}
}
return result;
}
let input = [
[1, 0, 1, 1, 1, 0, 1, 1, 0, 0],
[1, 1, 0, 1, 1, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 0, 0, 1, 1, 0],
];
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} ${answer(input[i])}`);
}
# 차이점
for(let i = 0; i < mark.length; i++){
if(mark[i] != 0){
result += ++acc;
}else{
acc = 0;
}
}
# 다양한 연산자를 사용 : 단항 연산자
- mark[i]값을 누적하는 대신 ++acc로 1 미리 더한 후 result 값에 할당했다.
- value++ 와 ++value의 차이는 크기 때문에 점수를 부여받고 누적하는 경우엔 value++가 적합
- 루프를 돌면서 인덱스를 1씩 업데이트 하는 경우 ++value가 적합