1이면 점수 1점, 0이면 0점. 1이 연속될 경우 +1, +2 +3.
총합 10점이 나와야 함.
여기서 주목해야 될 부분
if ( x=== 1) {
cnt ++;
answer += cnt;
}
else cnt = 0;
이게 이해가 안 됐는데, 다시 생각해보니 이해가 됐다.
누적이 필요한 알고리즘을 짤 때 잘 떠올려보자.
등수구하기
Array.from ( {length:n}, () => 1 )
from메서드로 array에 length 만큼 Index를 생성. callback 함수로 1로 고정함
[i]번째 index를 다른 모든 index 값과 비교해주세요
== 2중 for문을 돌리면 된다.
격자판 최대합 구하기
음. 여기서 이해 안 되는 게 두개 있다.
sum1 과 sum2 의 값을 0으로 for문 안에서 재할당해주지 않으면 이상한 답이 도출된다. 왜그럴까?
for문이 돌면서 한 개의 행과 열만 계산한다. answer = Math.max(answer, sum1, sum2)에 가장 큰 값을 저장하고, i<n 이란 조건이 충족할 때 까지 또 다른 포문이 돌아간다. !
이해했다!
sum1 = arr[i][j] 가 아니라 sum1 += arr[i][j] 로 더해주는 이유는 각각의 인덱스에 있는 값을 더해줘야 총합이 되기 때문이다.
ex) arr[0][0]값 + arr[0][1]값 + arr[0][2]값 . . . . . = sum1
허허 어렵네 이친구