작성
·
174
0
function solution(m,input){
var count=0
for(let lt=0; lt<input.length; lt++){
var sum=0
for(let rt=lt; rt<input.length; rt++){
sum+=input[rt]
if (sum>m) break
count++
}
}
document.write(count)
}
solution(5,[1, 3, 1, 2, 3]);
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 현정님, 자바스크립트 알고리즘 문제 풀이와 관련해 코드 평가를 요청하셨군요.
제시된 코드는 배열 input 내의 연속된 수들의 합이 m 이하가 되는 경우의 수를 찾는 알고리즘입니다. 이중 for루프를 사용해 모든 가능한 경우의 수를 세어 count 변수에 저장한 후 그 결과를 출력하고 있습니다.
코드의 로직 자체는 연속된 부분 배열의 합을 구하는 전형적인 방식을 따르고 있습니다. 다만 몇 가지 개선할 수 있는 점이 있습니다:
1. document.write()
함수는 현대 웹 개발에서 권장되지 않는 방식입니다. 대신 console.log(count)
를 사용하거나 결과를 웹페이지에 출력해야 한다면 DOM을 직접 조작하는 방식을 사용해보세요.
2. var
대신에 let
또는 const
를 사용하는 것이 좋습니다. var
는 함수 레벨 스코프를 가지며 호이스팅이 발생하지만, let
과 const
는 블록 레벨 스코프를 가지고 있어 더 안전하게 변수를 관리할 수 있습니다.
3. 성능상의 이유로, 코드를 최적화한다면 필요 이상으로 많은 반복을 줄일 수 있는 방식으로 접근하는 것이 좋을 것입니다. 예를 들어 투 포인터 알고리즘(Two Pointers Algorithm)을 사용할 수 있습니다.
주어진 문제의 요구사항에 대해 효율적으로 답변을 내놓으신 것 같습니다. 좀 더 발전된 코딩 스타일을 위한 고려 사항을 참고해 주시면 좋을 것 같습니다. 알고리즘 공부에 도움이 되셨길 바라며, 추가적인 질문이 있으시다면 언제든지 문의해 주세요. 화이팅입니다!