코테) 점수 계산(누적), 등수구하기, 격자판 최대합

Chiho Lee·2022년 3월 7일
0

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

허허 어렵네 이친구


profile
Hello,

0개의 댓글