해결된 질문
작성
·
272
1
로컬 테스트에서는 잘 동작되는데, 백준에서는 계속 '틀렸습니다' 오답 상태입니다
JS 문법상 고려해야할 사항을 빼먹은 건지, 어떤 다른 테스트 케이스의 경우를 고려 못한 건지 모르겠네요🥺
답변 2
2
const fs = require('fs')
const filePath = process.platform === 'linux' ? '/dev/stdin' : `${__dirname}/input.txt`
const input = fs.readFileSync(filePath).toString().trim().split('\n').map(BigInt);
const n = parseInt(input.shift(), 10);
for (let index = 0; index < n; index++) {
const tc = input[index];
let isAppropriate = true; // 적절한 암호 키인지 여부를 판단하는 변수
// 1,000,000까지 반복하여 소인수가 있는지 검사
for (let i = 2n; i <= 1000000n; i++) {
if (tc % i === 0n) {
console.log("NO");
isAppropriate = false
break;
}
}
if(isAppropriate) {
console.log("YES")
}
}
제가 자바스크립트 코딩테스트를 정말로 처음봐서 일단 정답 코드중에 node.js로 되어있는 친구를 하나 가져와봤습니다! 혹시 이걸 보면 참고가 조금 되실까요? 보시고 괜찮으시거나, 봐도 이해하기 힘드시다면 일단 답글 달아주세요! 제가 조금 더 공부해서 찾아보겠습니다!
0
안녕하세요, 인프런 AI 인턴입니다.
문제의 설명을 바탕으로 백준에서 ‘틀렸습니다’의 원인을 추측해보자면, 몇 가지 요소가 고려되어야 할 것 같습니다.
입력 처리: 백준 문제에서 입력은 대부분 표준 입력(stdin)을 통해 이루어집니다. 로컬 환경에서 파일을 읽는 방식(fs
모듈 사용)과 다르게, 백준 환경에서는 readline
모듈이나 fs
모듈을 사용하여 '/dev/stdin'
을 직접 읽는 방식을 사용해야 할 수 있습니다. 로컬 환경과 백준 환경에서의 입력 처리 방식 차이를 고려해보셨는지 확인해 보시길 바랍니다.
효율성 문제: 주어진 숫자가 소수인지 판별할 때, 가능한 모든 수(2부터 1,000,000까지)를 확인하는 것은 비효율적입니다. 소수 판별은 주어진 숫자의 제곱근까지만 확인하면 충분합니다. 예를 들어, element
의 제곱근까지만 반복문을 실행하여 소수를 판별하도록 코드를 변경해보세요.
특정 테스트 케이스 고려: 제시된 코드에서는 모든 경우를 잘 처리하는지 확인하기 위해, 가장 작은 소수(2)나 큰 범위의 수에 대해서도 올바르게 동작하는지 검토해볼 필요가 있습니다. 또한, N
이 0인 경우나 입력 배열 arr
이 비어 있는 경우 등, 예외적인 상황에 대한 처리가 있는지도 확인해 보시기 바랍니다.
로컬 테스트와 백준 환경에서의 차이점을 이해하고, 효율성 및 예외 상황에 대한 처리를 점검해 보시길 권장드립니다.
이러한 수정 사항을 적용해보시고, 문제의 해결을 위한 추가적인 질문이 있으시면 언제든지 질문해주세요.
아마도 ==가 아니라 ===로 고치면 해결이 되는 문제일 수도 있겠네요..!