programming language/Javascript

[JS] μž…λ ₯λ°›λŠ” 방법 ( scanf, std::cin )

moaoh 2023. 7. 18. 23:38

jsλŠ” λ‹€λ₯Έ 언어와 λ‹€λ₯΄κ²Œ μž…λ ₯λ°›λŠ” λΆ€λΆ„λΆ€ν„° κ³ λ‚œμ΄ μžˆμ—ˆλ˜ κ±° κ°™λ‹€.

μž…λ ₯λ°›λŠ” 방법에 λŒ€ν•΄μ„œ 정리λ₯Ό ν•΄λ³΄μžλ©΄

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

μœ„μ— μ½”λ“œμ—μ„œλŠ” 기본적으둜 a와 bλ₯Ό λ™μ‹œμ— λ°›λŠ” 방법을 μ˜ˆμ‹œλ‘œ λ‚˜νƒ€λ‚΄κ³  μžˆλ‹€.

일단 μž…λ ₯λ°›λŠ” 방식뢀터 μͺΌκ°œμ–΄ ν•˜λ‚˜ν•˜λ‚˜ 보자면

let

λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” λ°©λ²•μ—λŠ” var, let, const μ΄λ ‡κ²Œ 3κ°€μ§€κ°€ μ‘΄μž¬ν•œλ‹€κ³  ν•œλ‹€.
var에 κ²½μš°μ—λŠ” ν˜Έμ΄μŠ€νŒ…μ΄λ‚˜ μž¬μ„ μ–Έ λ“± μ½”λ“œλ₯Ό ꡬ성함에 μžˆμ–΄μ„œ λΆˆνŽΈν•œ 뢀뢄듀이 λ§Žμ•„μ„œ μ‚¬μš© X
let은 μš°λ¦¬κ°€ ν”νžˆ ν•˜λŠ” μ§€μ—­λ³€μˆ˜λΌκ³  μƒκ°ν•˜λ©΄ 되고
const에 κ²½μš°μ—λ„ 선언이 λ λ•Œμ—λ§Œ 값을 μˆ˜μ •ν•  수 있고 κ·Έ μ΄ν›„μ—λŠ” 값을 λ³€κ²½ν•  수 μ—†λŠ” 값이라고 ν•˜μ—¬

이번 λ¬Έμ œμ—μ„œλŠ” letλ₯Ό μ‚¬μš©ν•˜μ˜€λ‹€.

[a, b]

js에 κ²½μš°μ— 2κ°€μ§€ 값을 λ™μ‹œμ— λ°›μœΌλ €λ©΄ κ΄„ν˜Έλ‘œ λ¬Άμ–΄μ•Ό splitμ—μ„œ a와 b에 값을 λ”°λ‘œ λ”°λ‘œ 담을 μˆ˜κ°€ μžˆλ‹€κ³  ν•œλ‹€.

( κ΄„ν˜Έλ‘œ λ¬Άμ§€μ•ŠλŠ” κ²½μš°μ—λŠ” bμ—λ§Œ [ '4', '4' ] ν˜•μ‹μœΌλ‘œ 값이 λ“€μ–΄κ°€κ²Œ λœλ‹€. )

require("fs")

require은 λ©”μ„œλ“œλ₯Ό 톡해 μ™ΈλΆ€ λͺ¨λ“ˆμ„ κ°€μ Έμ˜€λŠ” 역할을 ν•œλ‹€. c++의 include 와 λΉ„μŠ·ν•œ κ°œλ…μœΌλ‘œ μƒκ°ν•˜λ©΄ λœλ‹€.

readFileSync('/dev/stdin')

readFileSync에 κ²½μš°μ—λŠ” scanfλ‚˜ std::cin μ—μ„œ ν•˜λŠ” 역할을 μˆ˜λ™μœΌλ‘œ ν•œλ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€. 기본적으둜 μš°λ¦¬κ°€ μž…λ ₯ν•˜λŠ” μž…λ ₯κ°’μ˜ κ²½μš°μ—λŠ” ‘/dev/stdin’ λΌκ³  ν•˜λŠ” μœ„μΉ˜μ— μž…λ ₯값이 λ“€μ–΄κ°€κ²Œ λ˜λŠ”λ° μ € ν•¨μˆ˜μ—μ„œ κ·Έ νŒŒμΌμ— 직접 μ ‘κ·Όν•˜μ—¬ μž…λ ₯값을 λΉΌλ‚΄μ–΄ μ˜¨λ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€.

toString()

μœ„μ—μžˆλŠ” readFileSync(’/div/stdin’)μ—μ„œ toString()에 ν•΄λ‹Ήν•˜λŠ” 값을 κ°€μ Έμ˜¨λ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€.

trim()

λ¬Έμžμ—΄μ— μžˆλŠ” μ•žλ’€ 곡백을 μ—†μ• μ£ΌλŠ” μ—­ν• 

split('\n')

split에 λ‹΄κΈ΄ 문자 κΈ°μ€€μœΌλ‘œ λ¬Έμžμ—΄μ„ μž˜λΌμ£ΌλŠ” μ—­ν• 

μœ„μ™€ 같은 역할듀이 λͺ¨μ—¬μ•Ό μ •μƒμ μœΌλ‘œ μž…λ ₯값을 받을 수 있게 λœλ‹€.

 

받은 μž…λ ₯값은 console.log()λ₯Ό ν†΅ν•΄μ„œ μ •μƒμ μœΌλ‘œ 좜λ ₯ν•  수 μžˆλ‹€.


μœ„μ— 값듀을 μ‘μš©ν•˜μ—¬ μ˜ˆμ‹œλ₯Ό λͺ‡κ°œ 더 μ œμ‹œλ₯Ό ν•΄λ³΄μžλ©΄

let [a, b] = require("fs")
    .readFileSync('/dev/stdin')
    .toString()
    .trim()
    .split('\n')
    .map(Number);

μœ„μ™€ 같은 ν˜•μ‹μœΌλ‘œ map(Number)을 μΆ”κ°€ν•˜κ²Œ 되면 λ“€μ–΄μ˜€λŠ” 값듀을 int ν˜•μ‹μœΌλ‘œ λ°›κ² λ‹€λŠ” 의미

 

let [a, b] = require("fs")
    .readFileSync('/dev/stdin')
    .toString()
    .trim()
    .split(' ');

split(' ') μ•ˆμ— ν•΄λ‹Ήν•˜λŠ” 값을 곡백으둜 λ°”κΎΈλ©΄ μ€„λ°”κΏˆμ΄ κΈ°μ€€μ΄μ•„λ‹ˆλΌ 곡백을 κΈ°μ€€μœΌλ‘œ 값을 자λ₯΄κ² λ‹€λΌλŠ” 의미