개발관련/매일 코딩 테스트 챌린지

자바스크립트 코딩 테스트 구름 문제 연속 점수 문제

개발자 Dane 2023. 7. 6. 20:55
반응형

연속 점수 문제

문제 연속 점수 문제

 

구름LEVEL

구름LEVEL 문제를 풀이하고 부족한 부분을 보완하며 실력을 키워보세요. 구름LEVEL은 코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입

level.goorm.io

 

 

솔루션

// 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로 하는지에 따라서 헷갈리기 쉬우니 주의해야됩니다.

 

 

반응형