Algorithm/μΈν”„λŸ°(inflearn)

[JavaScript/section 2] 04 - 점수 계산

_μ„±ν˜Έ_ 2022. 9. 6. 22:43
728x90
λ°˜μ‘ν˜•

πŸ“Œ 문제

OX λ¬Έμ œλŠ” λ§žκ±°λ‚˜ ν‹€λ¦° 두 경우의 닡을 κ°€μ§€λŠ” 문제λ₯Ό λ§ν•œλ‹€. μ—¬λŸ¬ 개의 OX 문제둜 λ§Œλ“€μ–΄μ§„ μ‹œν—˜μ—μ„œ μ—°μ†μ μœΌλ‘œ 닡을 λ§žνžˆλŠ” κ²½μš°μ—λŠ” 가산점을 μ£ΌκΈ° μœ„ν•΄μ„œ λ‹€μŒκ³Ό 같이 점수 계산을 ν•˜κΈ°λ‘œ ν•˜μ˜€λ‹€. 1번 λ¬Έμ œκ°€ λ§žλŠ” κ²½μš°μ—λŠ” 1점으둜 κ³„μ‚°ν•œλ‹€. μ•žμ˜ λ¬Έμ œμ— λŒ€ν•΄μ„œλŠ” 닡을 틀리닀가 닡이 λ§žλŠ” 처음 λ¬Έμ œλŠ” 1점으둜 κ³„μ‚°ν•œλ‹€. λ˜ν•œ, μ—°μ†μœΌλ‘œ 문제의 닡이 λ§žλŠ” κ²½μš°μ—μ„œ 두 번째 λ¬Έμ œλŠ” 2점, μ„Έ 번째 λ¬Έμ œλŠ” 3점, ..., K번째 λ¬Έμ œλŠ” K점으둜 κ³„μ‚°ν•œλ‹€. ν‹€λ¦° λ¬Έμ œλŠ” 0점으둜 κ³„μ‚°ν•œλ‹€. 

예λ₯Ό λ“€μ–΄, μ•„λž˜μ™€ 같이 10개의 OX λ¬Έμ œμ—μ„œ 닡이 λ§žμ€ 문제의 κ²½μš°μ—λŠ” 1둜 ν‘œμ‹œν•˜κ³ , ν‹€λ¦° κ²½μš°μ—λŠ” 0으둜 ν‘œμ‹œν•˜μ˜€μ„ λ•Œ, 점수 계산은 μ•„λž˜ ν‘œμ™€ 같이 κ³„μ‚°λ˜μ–΄, μ΄μ μˆ˜λŠ” 1 + 1 + 2 + 3 + 1 + 2 = 10점이닀.

μ‹œν—˜λ¬Έμ œμ˜ 채점 κ²°κ³Όκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 총점수λ₯Ό κ³„μ‚°ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

 

μ—°μ†μœΌλ‘œ 문제의 닡이 λ§žλŠ” κ²½μš°μ—μ„œλ§Œ + 1μ”© 가산점 처리λ₯Ό ν•΄μ€€λ‹€λŠ” 것을 μ΄ν•΄ν•˜λ©΄ μ‰½κ²Œ 문제 해결이 κ°€λŠ₯ν•˜λ‹€. λ‹€μŒ ν’€μ΄μ—μ„œ cnt λ³€μˆ˜λ₯Ό μ£Όλͺ©ν•˜μžβ—

 

πŸ“ 풀이

function solution(arr) {
  let answer = 0,
    cnt = 0;

  for (let x of arr) {
    if (x === 1) answer += ++cnt;
    else cnt = 0;
  }

  return answer;
}

let arr = [1, 0, 1, 1, 1, 0, 0, 1, 1, 0];
console.log(solution(arr));