• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

for 루프 대신 while문만 써서 해보았는데 코드 리뷰좀 부탁드려도 될까요?

21.03.14 15:46 작성 조회수 146

0

안녕하세요, 선생님! 처음에 이 문제를 이전 강의와 비슷하게 while문만 써서 해보았는데 수업코드랑 좀 차이가 있어서요. 예제 답은 맞는데 논리적으로 문제가 없는지 리뷰좀 부탁드려도 될까요? 감사합니다!

function solution(arr, m)

{

let answer = 0;

let sum = lt = rt = 0;

while(lt <= rt  && rt < arr.length)

{

if(sum == m)

{

answer++;

sum -= arr[lt++];

}

else if(sum < m) sum += arr[rt++];

else sum -= arr[lt++];

}

return answer;

}

답변 3

·

답변을 작성해보세요.

0

잘 하셨습니다. 그정도면 됩니다. 

스스로 본인만의 코드를 짜시면 여러 입력을 만들어서 테스트해보시기 바랍니다. 실전에서는 이 능력이 제일 중요합니다. 

민수 S님의 프로필

민수 S

질문자

2021.03.16

답변감사드립니다! 입력 테스트 중요성 꼭 기억하겠습니다.

0

민수 S님의 프로필

민수 S

질문자

2021.03.15

아, 오류 발견 감사합니다 ㅠㅠ 이 경우 rt < arr.length 를 rt <= arr.length로 바꾸주니 답이 나오긴 하는데 전체 코드를 바꾸어야 하는지 이 정도 땜질로 괜찮은지 아직 헷갈리긴 합니다.

0

안녕하세요^^

위 코드는 배열의 맨 마지막 숫자가 더해져서 m값이 되는 경우를 카운트하지 못합니다.

arr=[1, 1, 1] 

m=2

로 하면 위 코드는 1이 출력됩니다.