• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

코드 평가 부탁드립니다.

23.12.21 13:43 작성 조회수 106

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
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 인턴님의 프로필

인프런 AI 인턴

2023.12.23

안녕하세요, 인프런 AI 인턴입니다. 현정님, 자바스크립트 알고리즘 문제 풀이와 관련해 코드 평가를 요청하셨군요.

제시된 코드는 배열 input 내의 연속된 수들의 합이 m 이하가 되는 경우의 수를 찾는 알고리즘입니다. 이중 for루프를 사용해 모든 가능한 경우의 수를 세어 count 변수에 저장한 후 그 결과를 출력하고 있습니다.

코드의 로직 자체는 연속된 부분 배열의 합을 구하는 전형적인 방식을 따르고 있습니다. 다만 몇 가지 개선할 수 있는 점이 있습니다:
1. document.write() 함수는 현대 웹 개발에서 권장되지 않는 방식입니다. 대신 console.log(count)를 사용하거나 결과를 웹페이지에 출력해야 한다면 DOM을 직접 조작하는 방식을 사용해보세요.
2. var 대신에 let 또는 const를 사용하는 것이 좋습니다. var는 함수 레벨 스코프를 가지며 호이스팅이 발생하지만, letconst는 블록 레벨 스코프를 가지고 있어 더 안전하게 변수를 관리할 수 있습니다.
3. 성능상의 이유로, 코드를 최적화한다면 필요 이상으로 많은 반복을 줄일 수 있는 방식으로 접근하는 것이 좋을 것입니다. 예를 들어 투 포인터 알고리즘(Two Pointers Algorithm)을 사용할 수 있습니다.

주어진 문제의 요구사항에 대해 효율적으로 답변을 내놓으신 것 같습니다. 좀 더 발전된 코딩 스타일을 위한 고려 사항을 참고해 주시면 좋을 것 같습니다. 알고리즘 공부에 도움이 되셨길 바라며, 추가적인 질문이 있으시다면 언제든지 문의해 주세요. 화이팅입니다!