반응형
문제 연속 점수 문제
솔루션
// Run by Node.js
const readline = require('readline');
(async () => {
let rl = readline.createInterface({ input: process.stdin });
let data = []
for await (const line of rl) {
data.push(line)
rl.close();
}
const count = parseInt(data[0])
const scores = data[1].split(" ").map(Number)
let max = scores[0]
let currentSum = scores[0]
for(let i = 1; i < count; i++){
if(scores[i] == scores[i-1]+1){
currentSum += scores[i]
}else{
currentSum = scores[i]
}
max = Math.max(max,currentSum)
}
console.log(max)
process.exit();
})();
위처럼 해서 제출 하면 3번 테스트 케이스에서 런타임 문제로 FAIL 됩니다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin', 'utf8').trim().split('\n');
const count = parseInt(input[0]);
const scores = input[1].split(' ').map(Number);
let max = scores[0];
let currentStreak = scores[0];
for (let i = 1; i < count; i++) {
if (scores[i] === scores[i - 1] + 1) {
currentStreak += scores[i];
} else {
currentStreak = scores[i];
}
max = Math.max(max, currentStreak);
}
console.log(max);
이렇게 수정하면 통과 됩니다.
배운 점
node 환경에서 readline과 fs의 성능 차이로 통과 유무가 결정되기 때문에 제대로된 풀이를 했는지 알기 어렵습니다.
readline 보다 fs의 성능이 좋다는 것을 알아둡니다.
주의할점
이런 문제는 시작 index를 0이나 1로 하는지에 따라서 헷갈리기 쉬우니 주의해야됩니다.
반응형
'개발관련 > 매일 코딩 테스트 챌린지' 카테고리의 다른 글
자바스크립트 구름 코딩테스트 문제 구름 숫자 (0) | 2023.07.07 |
---|---|
자바스크립트 코딩테스트 구름 거스름돈 (0) | 2023.07.06 |
[자바스크립트] 코딩테스트 큰 팩토리얼 (0) | 2023.07.06 |
프로그래머스 무인도 버티기 자바스크립트 (0) | 2023.04.15 |
[코딩테스트 준비]자바스크립트 그리드 알고리즘 코딜리티 연습 javascript algorithm codility greedy (1) | 2023.04.13 |