Study/Coding Test

[JS] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 연속 λΆ€λΆ„ μˆ˜μ—΄ ν•©μ˜ 개수

Jieunny 2023. 3. 3. 11:06

πŸ“Œ  문제

문제 μ„€λͺ…

μ² ν˜ΈλŠ” μˆ˜μ—΄μ„ κ°€μ§€κ³  놀기 μ’‹μ•„ν•©λ‹ˆλ‹€. μ–΄λŠ λ‚  μ² ν˜ΈλŠ” μ–΄λ–€ μžμ—°μˆ˜λ‘œ 이루어진 μ›ν˜• μˆ˜μ—΄μ˜ μ—°μ†ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄μ˜ ν•©μœΌλ‘œ λ§Œλ“€ 수 μžˆλŠ” μˆ˜κ°€ λͺ¨λ‘ λͺ‡ 가지인지 μ•Œμ•„λ³΄κ³  μ‹Άμ–΄μ‘ŒμŠ΅λ‹ˆλ‹€. μ›ν˜• μˆ˜μ—΄μ΄λž€ 일반적인 μˆ˜μ—΄μ—μ„œ 처음과 끝이 μ—°κ²°λœ ν˜•νƒœμ˜ μˆ˜μ—΄μ„ λ§ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μˆ˜μ—΄ [7, 9, 1, 1, 4] 둜 μ›ν˜• μˆ˜μ—΄μ„ λ§Œλ“€λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.


μ›ν˜• μˆ˜μ—΄μ€ 처음과 끝이 μ—°κ²°λ˜μ–΄ λŠκΈ°λŠ” 뢀뢄이 μ—†κΈ° λ•Œλ¬Έμ— μ—°μ†ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄λ„ 일반적인 μˆ˜μ—΄λ³΄λ‹€ λ§Žμ•„μ§‘λ‹ˆλ‹€.
μ›ν˜• μˆ˜μ—΄μ˜ λͺ¨λ“  μ›μ†Œ elementsκ°€ μˆœμ„œλŒ€λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, μ›ν˜• μˆ˜μ—΄μ˜ 연속 λΆ€λΆ„ μˆ˜μ—΄ ν•©μœΌλ‘œ λ§Œλ“€ 수 μžˆλŠ” 수의 개수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.


μ œν•œμ‚¬ν•­
  • 3 ≤ elements의 길이 ≤ 1,000
  • 1 ≤ elements의 μ›μ†Œ ≤ 1,000

 

πŸ’‘  아이디어

μ›ν˜• μˆ˜μ—΄μ΄λ‹ˆκΉŒ elementsλ₯Ό concat으둜 ν•©μ³μ„œ λ§Œλ“€μ–΄μ£Όκ³ , λŒ€μ‹  for문은 elements 만큼만 λˆλ‹€.

κ²ΉμΉ˜λŠ” 합은 μ œκ±°ν•΄μ•Ό ν•˜λ―€λ‘œ set을 μ‚¬μš©ν•΄μ€€λ‹€.

0λΆ€ν„° 1개, 2개, 3, 4개, 5κ°œκΉŒμ§€ 돌고, j개 μ¦κ°€ν•˜λ©΄ 1λΆ€ν„° 1개, 2개...λŒλ©΄μ„œ 합을 ꡬ해쀀닀.

합을 κ΅¬ν•˜λŠ” ν•¨μˆ˜ sum은 λ”°λ‘œ λ§Œλ“€μ–΄μ€¬λ‹€.

 

 

✏️  풀이

function solution(elements) {
  var answer = 0;
  let set = new Set();
  let doubleElements = elements.concat(elements);
  for(let i=0; i<elements.length; i++){
    for(let j=0; j<elements.length; j++){
      set.add(sum(doubleElements.slice(j, j+i+1)))
    }
  }
  answer = set.size;
  return answer;
}

function sum(arr){
  let sum = 0;
  for(let i of arr){
    sum+=i;
  }
  return sum;
}