MINCOINS - JS Solution

Why is my code failing when I pass 10 inputs ?

process.stdin.setEncoding(‘utf8’);
process.stdin.on(‘data’, function(inputs) {
let input = inputs.trim().split(‘\n’);
let testCases = parseInt(inputs[0]);
for (let i = 1; i <= testCases; i++) {
let X = parseInt(input[i]);
if ((X % 5 !== 0)) {
console.log(-1);
} else if (X % 10 !== 0) {
console.log(Math.floor((X / 10) + 1));
} else {
console.log(X / 10);

    }
}

});

The issue with your code arises from how you’re handling the inputs and parsing them correctly. Specifically:

  1. Handling the inputs variable:
  • You are using inputs in the split('\n') method, but you’re using inputs[0] inside the loop. This will not give the expected results because inputs is the entire string and not an array.
  1. Incorrect Array Indexing:
  • In let testCases = parseInt(inputs[0]);, you’re accessing inputs[0] which is correct, but in the loop, you’re using input[i] which is the wrong variable name. You should be using input (the array you split), not inputs.
  1. Logic in the loop:
  • The current logic seems fine for checking divisibility conditions, but the parsing issue must be fixed for it to work with multiple inputs.

Fixed Code:

Here is a corrected version of your code:

javascript

Copy code

process.stdin.setEncoding('utf8');
process.stdin.on('data', function(inputs) {
    let input = inputs.trim().split('\n');  // Split by newline to handle each test case
    let testCases = parseInt(input[0]);    // The first line is the number of test cases
    for (let i = 1; i <= testCases; i++) { // Start from 1 to skip the first line
        let X = parseInt(input[i]);
        if (X % 5 !== 0) {
            console.log(-1);
        } else if (X % 10 !== 0) {
            console.log(Math.floor((X / 10) + 1));
        } else {
            console.log(X / 10);
        }
    }
});

Key Changes:

  1. Fixed Input Parsing:
  • I changed inputs to input when referencing the array after splitting the input by newline (\n).
  • You were mistakenly using inputs instead of input inside the loop.
  1. Proper Loop Indexing:
  • The loop should start from 1 (since the first item input[0] is the number of test cases).
  1. Handling Multiple Inputs:
  • With the correct array split and indexing, each test case is handled correctly.

Additional Notes:

  • Edge Case Handling: Make sure that your input does not contain extra newline characters or spaces that could affect the split.
  • Input Format: If the input format is not correct (such as having empty lines or unexpected characters), it could lead to failures or unexpected results.

Example Input/Output:

Input:

Copy code

3
10
25
17

Output:

diff

Copy code

1
3
-1

Let me know if the issue persists or if you need further clarification!

1 Like