1점을 득하기 위해서는 4루타가 필요하다.
2점을 득하기 위해서는? 8루타라고 생각할 수 있지만 기존 4루타에서 한명이 들어왔고, 1,2,3루에 사람이 있기 때문에, 1루타만 더 치면 되는 것이다.
그렇다면, 우리는 1점은 4루타, 2점은 5루타, 3점은 6루타 로 보았을 때 원하는 점수 +3만 더하면 점수에 필요한 안타수를 계산할 수 있다.
이기고 있을 때에는 칠 필요가 없고, 동점일 때에는 1점을 내야 이기니까 조건문으로 내걸고
위의 경우가 아닌 경우에 필요한 점수 +3 을 반환하면 된다.
const solution = (dScore,kScore) => {
return dScore>kScore ? 0 : Math.abs(dScore-kScore)+4
}
몇일전에 풀었던 초밥집과 유형이 비슷하다. 슬라이딩 윈도우 기법을 이용하여 풀면 될 것 같다.
left와 right, count 변수를 만들어 비교하면서 풀면 될 것 같다.
const solution = (nums, k) => {
let left = 0;
let cnt = 0;
let maxLength = 0;
for (let right = 0; right < nums.length; right++) {
if (nums[right] === 0) {
cnt++;
}
while (cnt > k) {
if (nums[left] === 0) cnt--;
left++;
}
maxLength = maxLength > right - left + 1 ? maxLength : right - left + 1;
}
return maxLength;
}