// Node.js의 readline 모듈을 불러옴
const readline = require('readline');
// 즉시 실행 함수 (async를 사용하기 위한 비동기 함수)
(async () => {
// readline 인터페이스 생성 (표준 입력을 받기 위한 설정)
let rl = readline.createInterface({ input: process.stdin });
// W와 R 변수를 루프 밖에서 사용하기 위해 미리 선언
let W, R;
// 입력 스트림에서 한 줄씩 읽어오는 비동기 루프
for await (const line of rl) {
// 입력받은 line을 공백으로 분리하고 숫자로 변환하여 W, R에 할당
[W, R] = line.split(" ").map(Number);
// 입력 종료
rl.close();
}
// 1RM 계산: W * (1 + R/30) 공식 사용
const RM = W*(1+R/30);
// 계산 결과를 정수로 변환하여 출력
console.log(parseInt(RM));
// 프로그램 종료
process.exit();
})();
입력 처리 모듈 호출
// Node.js의 readline 모듈을 불러옴
const readline = require('readline');
node.js 환경을 주로 사용하기 때문에 require를 사용한다.
ES Modules 방식 (최신 JavaScript)은 import readline from 'readline'; 방식으로 import 방식을 사용한다.
입력 처리 부분
(async () => {
// readline 인터페이스 생성 (표준 입력을 받기 위한 설정)
let rl = readline.createInterface({ input: process.stdin });
기본적으로 문제를 웹에서 처리하기 때문에 로딩 시간이 걸린다. 때문에 async를 사용해서 비동기 작업을 동기작업으로 전환해줘야한다.
let rl:
생성된 인터페이스를 저장할 변수
이 변수를 통해 입력 스트림을 제어할 수 있음
readline.createInterface():
readline 모듈의 인터페이스를 생성하는 메서드
입력과 출력을 처리할 수 있는 인터페이스를 만듦
{ input: process.stdin }:
객체 형태의 설정을 전달
process.stdin은 표준 입력 스트림을 의미
즉, 키보드로부터의 입력을 받겠다는 의미
//전체 설정 옵션 예시:
let rl = readline.createInterface({
input: process.stdin, // 입력 소스 (키보드)
output: process.stdout, // 출력 대상 (콘솔)
prompt: '> ' // 프롬프트 문자 (선택사항)
});
입력 데이터 할당 부분
// 입력 스트림에서 한 줄씩 읽어오는 비동기 루프
for await (const line of rl) {
for of 문을 사용해서 const line에 rl의 데이터를 할당한다.
만역에 여러줄이라면
const readline = require('readline');
(async () => {
let rl = readline.createInterface({ input: process.stdin });
let lines = []; // 보통 이렇게 lines라는 이름으로 배열 생성
for await (const line of rl) {
lines.push(line); // 각 줄을 lines 배열에 저장
}
// 이제 lines 배열에는 모든 입력이 저장되어 있음
// lines[0] - 첫 번째 줄
// lines[1] - 두 번째 줄
// ...
// 예시 처리
const firstLine = lines[0].split(" ").map(Number);
const secondLine = lines[1].split(" ").map(Number);
})();