✏️ 문제

네카라쿠배 대학교에서 OX퀴즈 쇼를 진행한다. 정답을 맞췄을 경우 문제당 1점을 부여하며, 연속적으로 맞출 경우 연속한 정답 개수 만큼의 가산점을 부여해준다.
진행자를 위해 채점표를 보고 점수를 산출해주는 프로그램을 제작해주자.
배열 형태의 채점 값이 1[정답], 0[오답]으로 입력되며, 점수의 합계를 반환한다.
입력값

[1, 0, 1, 1, 1, 0, 1, 1, 0, 0],
[1, 1, 0, 1, 1, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 0, 0, 1, 1, 0],

📝 풀이

function answer(mark) {
  let result = 0;
  let score = 0;

  // 1. 1 > 1점 , 연속한 경우 count 만큼 추가
  for (let i = 0; i < mark.length; i++) {
    if (mark[i] == 1) {
      result += ++score; // 먼저 증가한 후 score에 넣어준다. 
    } else {
      score = 0;
    }
  }

  return result;
}
  1. 이 문제에서 주목해야할 점은 연속적으로 맞출 경우 연속한 정답의 개수만큼 가산점이 부여된다는 것을 잘 생각 해야한다.
mark[0] 정답 : result(1), score(1)
mark[1] 오답 : result(0), score(0)
mark[2] 정답 : result(2), score(1)
mark[3] 정답 : result(4), score(2)
mark[4] 정답 : result(7), score(3)
mark[5] 오답 : result(7), score(0)
mark[6] 정답 : result(8), score(1)
mark[7] 정답 : result(10), score(2)
mark[8] 오답 : result(10), score(0)
mark[9] 오답 : result(10), score(0)
즉 result = 10
  1. for문을 이용하여 i가 mark의 길이만큼 순회하며, 연속으로 정답을 맞출 경우를 계산할 수 있게 코드를 작성 해준다.
  2. 그리고 if문을 이용하여 만약 mark[i]가 1점(정답) 일 경우, result에 score를 더해주고 아닐 경우 0으로 초기화 하는 코드를 작성한다.
profile
#UXUI #코린이

0개의 댓글