js: 자바스크립트 입력받는 방법

2024. 8. 2. 23:25·java script

 

 

지금까지 프로그래머스에서만 코딩테스트 문제를 풀고 있었는데

오늘 처음 백준 문제를 풀어보려니 다 입력을 받아야한다.

그 이유는 Programmers 같은 경우에는 계산에 더욱 초점을 맞추고자 입출력을 간소화하여 

입력은 함수인자(parameter)로 주어지고 출력은 반환값 returen value으로 하는 것으로 대체된다.

 

 

js의 입력에 대해서는 따로 공부한 적이 없는데 이 기초도 모르고 있었다는게..

 

따라서 Baeckjoon 에서 코딩테스트 연습을 위해서 입력에 대해서 공부해보려 한다. 

 

 

ide(vscode)

const filePath = process.platform === 'linux' ? '/dev/stdin' : 'example.txt';
const input = require('fs').readFileSync(filePath).toString().trim().split("\n");

 

fs vs readline 

 

fs는 file system을 의미한다. 

시스템 수준에서 모든 파일 시스템 작업은 이러한 파일 설명자를 사용하여 각 특정 파일을 식별하고 추적한다. 윈도우즈 시스템은 리소스를 추적하기 위해 다르지만 개념적으로 유사한 메커니즘을 사용한다. 

 

readFile함수는 비동기적으로 파일의 전체를 읽으므로 파일을 읽어들이기가 완료된 후에 콜백 함수를 통하여 다음 스텝을 진행할 수 있는 반면, readFileSync는 동기적으로 파일을 읽어들입니다. 어차피 입력을 다 받아야만 계산을 진행할 수 있으므로, 동기적 처리 방식이 코드도 간결하고 이해하기 편합니다

 

-> 결론 readline은 복잡하기도 하고 잘 쓰지 않으니 fs를 쓰면 된다. 

1. 한 글자 입력 받기

 

var input = require('fs').readFileSync('/dev/stdin').toString().trim();
var n = input;
//숫자일경우 
//var n = Number(input)

 

2. 공백을 기준으로 여러 글자(한 줄) 입력 받기

 

let input = require('fs').readFileSync(filePath).toString().split(' ');

여기서 input 은 배열 자료형으로 담기므로 각 글자에 접근하려면 인덱싱으로 접근

 

3. 여러 줄 입력 받기

const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

 

input에 각 줄이 배열 자료형으로 담기므로 각 줄에 접근하려면 인덱싱으로 접근 

 

4. 첫 줄에 자연수 n을 받고, 다음 줄에 공백으로 구분된 여러 값 입력

const fs = require('fs');
const [n, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split(/\s/);

 

 

4. 첫 줄에 자연수 n을 받고, 다음 줄부터 여러 개의 줄에 걸쳐 한 줄에 하나의 값을 입력받을 때

const fs = require('fs');
const [n, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

 

 

5. 배열 오름차순 방법

 

sort()를 쓰게 되면 배열의 숫자들이 크기 순서가 아닌 유니코드 순서로 정렬된다. 

따라서 크기 순서로 정렬하기 위해서는 sort()함수의 파라미터로 함수를 정의해야한다. 

arr.sort(function(a, b)  {
  if(a > b) return 1;
  if(a === b) return 0;
  if(a < b) return -1;
});

 

 

6. 배열 문자를 숫자로

 

arr = input.map(Number)

각 원소마다 Number 함수를 실행

'java script' 카테고리의 다른 글

[java script] 클래스  (0) 2024.10.24
js : var 와 let의 차이 그리고 const  (1) 2024.01.09
'java script' 카테고리의 다른 글
  • [java script] 클래스
  • js : var 와 let의 차이 그리고 const
hyejeong_02
hyejeong_02
  • hyejeong_02
    프론트엔드 개발일지
    hyejeong_02
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • React (9)
      • 네트워크 (2)
      • git (2)
      • HTML (0)
      • CSS (1)
      • Typescript (1)
      • java script (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    uncontrolled
    controlled
    useeffect오류
    무한스크롤
    의존성배열
    var와 let의 차이
    redux
    ESLint
    infiniteScroll
    리렌더링
    useefftect
    Prettier
    react-hook-form
    제어 컴포넌트
    intersectionObserver
    불변성
    react
    얕은 복사
    비제어 컴포넌트
    js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
hyejeong_02
js: 자바스크립트 입력받는 방법
상단으로

티스토리툴바