이 영역을 누르면 첫 페이지로 이동
Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

페이지 맨 위로 올라가기

Nuhends 의 Tech Life

IT / Tech / 재테크 관련 뉴스를 최대한 알기 쉽게 전달하는 Tech 블로그 입니다.

[Softeer] input값 읽기 Tip

  • 2025.04.23 20:09
  • 프로그래밍/Algorithm
반응형

Softeer 코딩테스트

1. 배경

sorteer에서는 프로그래머스와 달리 input 값을 읽어와서 console.log()로 출력하는 요건이다.

그래서 node.js 실무 코드 작성할 때 처럼 fs 모듈을 이용해서 읽어왔었음.

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin', 'utf8');
const inputs = input.trim().split('\n');

const [first, ...args] = inputs
let [w, n] = first.split(' ')

 

이렇게 풀이를 해오다 이슈가 발생함.

 

그건 바로 메모리 이슈. 256MB 제한에 걸려버림

fs readFileSync 메모리 이슈

 

 

 

2. 해결책

Node.js의 readline을 써서 입력을 스트림으로 처리하면 메모리를 아낄 수 있음

const readline = require('readline');

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

// 사용할 변수 선언 및 초기값 할당
let W = 0, N = 0;
const items = [];


// input 처리
rl.on('line', (line) => {
    // 1번째 라인
  if (!W) {
    [W, N] = line.trim().split(' ').map(Number);
  } else {
    const [m, p] = line.trim().split(' ').map(Number);
    items.push([m, p]);
    if (items.length === N) {
      rl.close(); // 모든 금속 정보를 다 받았으면 종료
    }
  }});

// 로직 처리
rl.on('close', () => {
  // ...
});

 

 

3. 이슈 원인

Javascript 시간/메모리

 

제약조건

1 ≤ N ≤ 106인 정수

1 ≤ W ≤ 104인 정수

1 ≤ Mi, Pi ≤ 104인 정수

입력형식

첫 번째 줄에 배낭의 무게 W와 귀금속의 종류 N이 주어진다. i + 1 (1 ≤ i ≤ N)번째 줄에는 i번째 금속의 무게 Mi와 무게당 가격 Pi가 주어진다.

입력 예제1

100 2

90 1

70 2

 

 

입력 형식에 i+1 부터 N까지 총 N줄이 입력될 수 있음.

N의 범위는 최소 1 ~ 최대 1,000,000(백만) -> 즉, 100만줄 * 2 (줄마다 숫자 2개)

- "숫자 숫자\n" × 1,000,000 = 약 15~25MB 텍스트

- 파싱 후 .split() → 배열 크기, 객체 생성, 중복 메모리 → 복합적으로 100MB 이상 쓸 수 있음

 

💥 메모리 초과 원인은:

  • 입력을 한꺼번에 문자열로 읽고 파싱했기 때문
반응형
저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 > Algorithm' 카테고리의 다른 글

[Softeer] lv2. [21년 재직자 대회 예선] 전광판 / Javascript  (1) 2025.04.24
[Softeer] lv2. 금고털이 풀이 / Javascript  (0) 2025.04.23
[Algorithm] 프로그래머스 > 이상한 문자 만들기  (3) 2020.12.30
[Algorithm] 프로그래머스 > 평균 구하기  (2) 2020.12.29
[Algorithm] 프로그래머스 > 핸드폰 번호 가리기  (1) 2020.12.28

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Softeer] lv2. [21년 재직자 대회 예선] 전광판 / Javascript

    [Softeer] lv2. [21년 재직자 대회 예선] 전광판 / Javascript

    2025.04.24
  • [Softeer] lv2. 금고털이 풀이 / Javascript

    [Softeer] lv2. 금고털이 풀이 / Javascript

    2025.04.23
  • [Algorithm] 프로그래머스 > 이상한 문자 만들기

    [Algorithm] 프로그래머스 > 이상한 문자 만들기

    2020.12.30
  • [Algorithm] 프로그래머스 > 평균 구하기

    [Algorithm] 프로그래머스 > 평균 구하기

    2020.12.29
다른 글 더 둘러보기

정보

Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

  • Nuhends 의 Tech Life의 첫 페이지로 이동
반응형

검색

메뉴

  • 홈
  • 웹 개발
  • 경제 데이터
  • 경제 공부
  • 방명록

카테고리

  • 분류 전체보기 (127)
    • 프로그래밍 (69)
      • React (3)
      • HTML&CSS 사전 (13)
      • JAVASCRIPT 사전 (11)
      • Algorithm (23)
      • 이슈 정리 (2)
      • 개발 환경 (4)
      • NodeJS (1)
      • Typescript (4)
      • NextJS (5)
      • React-Query (2)
      • ai (1)
    • 경제 데이터 (22)
      • 주식 순위 (20)
      • 경제지표 (2)
    • 경제 공부 (25)
      • 경제 신문 읽기 (3)
      • 세금 재테크 (7)
      • 인사이트 (4)
      • 경제용어정리 (9)
      • 정부 지원 제도 관련 (2)
    • 팁 모음 (11)
      • 인터넷 (5)
      • 생활 (3)
      • SNS 맛집 (3)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • softeer
  • 코딩테스트
  • javascript
  • 자바스크립트
  • 코테 풀이
  • 코테
  • 프로그래머스
  • 알고리즘

나의 외부 링크

정보

nuhends의 Nuhends 의 Tech Life

Nuhends 의 Tech Life

nuhends

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © nuhends. Designed by Fraccino.

티스토리툴바