백준 10773 제로 | JavaScript Number() vs parseInt()

예짱구·2025년 8월 27일

알고리즘

목록 보기
15/16

https://www.acmicpc.net/problem/10773


문제 자체는 어렵지 않다 !
스택을 하나 만들어서 새로 추가할 값이 0이면 pop하고, 0이 아니라면 그 값을 push하면 된다.

다만, readline으로 입력값을 받아오면 항상 문자열이기 때문에 숫자로 형변환이 필요하다.

  1. Number()
  2. pasrseInt()

이 때 숫자로 형변환을 하는 방법은 두가지가 있다.

두가지 방법의 차이점이 무엇이냐 !!

Number()는 값을 바꾸지 않고 타입만 숫자로 변환하고,
parseInt()는 소수점이 있다면 내림처리하여 정수로 바꾸고 숫자로 변환한다.

console.log(Number(1.5));
console.log(parseInt(1.5));

이 코드를 실행해보면

결과값이 이렇게 나온다 !!

Int가 정수형을 나타내는 것임을 생각하면 쉽게 구분할 수 있다.
상황에 따라 잘 골라서 사용하면 된다ㅎㅎ

전체 코드

function solution(array) {
  const stack = [];

  for (let i in array) {
    if (array[i] == 0) {
      stack.pop();
    } else {
      stack.push(array[i]);
    }
  }

  let sum = 0;

  for (let i = 0; i < stack.length; i++) {
    sum += Number(stack[i]);
  }

  return sum;
}

console.log(Number(1.5));
console.log(parseInt(1.5));

// =====입출력=====

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];

rl.on("line", (line) => {
  input.push(line);

  if (input.length === parseInt(input[0]) + 1) {
    rl.close();
  }
}).on("close", () => {
  const count = parseInt(input[0]);
  const array = input.slice(1, count + 1);

  console.log(solution(array));
});

근데 저번 문제를 풀면서 작성했던 입출력 코드를 재사용하다보니 입력값을 문자열로 처리하고 있었다..

처음부터 숫자로 입력받으면 좀 더 효율적일 것 같다 !!

개선 코드

function solution(array) {
  const stack = [];

  for (let i in array) {
    if (array[i] == 0) {
      stack.pop();
    } else {
      stack.push(array[i]);
    }
  }

  let sum = 0;

  for (let i = 0; i < stack.length; i++) {
    sum += stack[i];
  }

  return sum;
}

// =====입출력=====

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];

rl.on("line", (line) => {
  if (input.length === 0) {
    input.push(Number(line));
  } else {
    input.push(Number(line));
  }

  if (input.length === input[0] + 1) {
    rl.close();
  }
}).on("close", () => {
  const count = input[0];
  const array = input.slice(1);

  console.log(solution(array));
});

메모리나 시간 면에서 차이가 크지 않아서 문제 상황에 따라 더 적절한 방법을 선택하면 좋을듯 !!

profile
IF YOU WANNA CHANGE, BE NOT AFRAID💥

0개의 댓글