2739번 구구단
const readline=require('readline');
const rl=readline.createInterface({
input:process.stdin,
output:process.stdout
});
const gugudan = (num) => {
for(let i=1; i<=9; i++){
console.log(`${num} * ${i} = ${num*i}`);
}
}
rl.on("line", function(line){
const input = parseInt(line);
gugudan(input);
rl.close();
}).on("close", function(){
process.exit();
})
const input = require('fs').readFileSync('/dev/stdin').toString();
const num = Number(input[0]);
for(let i=1; i<9; i++){
console.log(`${num} * ${i} = ${num*i}`);
}
10950번 A+B - 3
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
const count = input[0];
for (let i = 1; i <= count; i++) {
let nums = input[i].split(' ');
a = Number(nums[0]);
b = Number(nums[1]);
console.log(a+b);
}
줄('\n')을 기준으로 테스트케이스를 나누고 테스트케이스인 count에 input 첫번째 값을 할당한다.
첫번째를 제외하고 count 까지만큼 for문을 돌아 공백(' ')을 기준으로 a와 b를 나눠준 후 더한값을 출력한다.
8393번 합
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
const n = Number(input[0]);
let sum = 0;
for(let i=0; i<=n; i++){
sum+=i;
}
console.log(sum);
15552번 빠른 A+B
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
const count = Number(input[0]);
let sum = '';
for(let i=1; i<=count; i++){
let nums = input[i].split(' ');
a = Number(nums[0]);
b = Number(nums[1]);
sum += a + b + "\n";
}
console.log(sum);
10950번처럼 하나씩 출력을 할 경우 시간 초과가 뜬다.
공백을 기준으로 a와 b를 나누고 정수 변환해 준 다음 개행문자로 구분지어 하나의 문자열에 출력을 해준다.
2741번 N찍기
const input = require('fs').readFileSync('/dev/stdin').toString();
let answer = "";
for(let i=1; i<=Number(input); i++){
answer += i + "\n";
}
console.log(answer);
2742번 기찍N
const input = require('fs').readFileSync('/dev/stdin').toString();
let answer ="";
for(let i=Number(input); i>=1; i--){
answer+=i+"\n";
}
console.log(answer);
위의 두 문제도 역시 for문 돌때마다 하나씩 출력하면 시간초과가 나오므로
문자열에다 하나씩 더해 개행문자로 줄을 나눈 후 한꺼번에 출력을 한다.
11021번 A+B - 7
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
const count = Number(input[0]);
for(let i=1; i<=count; i++){
let nums = input[i].split(' ');
a = Number(nums[0]);
b = Number(nums[1]);
console.log(`Case #${i}:`,a+b);
}
11022번 A+B - 8
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
const count = input[0];
for(let i=1; i<=count; i++){
let nums = input[i].split(' ');
a = Number(nums[0]);
b = Number(nums[1]);
console.log(`Case #${i}: ${a} + ${b} = ${a+b}`);
}
2438번 별 찍기 -1
const input = require('fs').readFileSync('/dev/stdin').toString();
const count = Number(input);
result = '';
for(let i=0; i<count; i++){
for(let j=0; j<=i; j++){
result += '*';
}
result += '\n';
}
console.log(result);
for문을 두번 중첩시켜 안쪽 for문이 끝나고 바깥쪽 for문이 돌 때 개행문자를 출력해주는 위의 방법도 있지만,
한줄씩 출력되는 자바스크립트 console.log의 특징을 이용해 간편하게 아래와 같이 for문이 한번 돌 때마다 별을 추가시켜 출력하는 방식으로도 해보았다.
const input = require('fs').readFileSync('/dev/stdin').toString();
const count = Number(input);
result = '';
for(let i=0; i<count; i++){
result += "*";
console.log(result);
}
2439번 별 찍기 -2
const input = require('fs').readFileSync('/dev/stdin').toString();
const count = Number(input);
result = '';
for(let i=0; i<count; i++){
for(let j=0; j<count-i-1; j++){
result+=' ';
}
for(let k=0; k<=i; k++){
result+='*';
}
result+='\n';
}
console.log(result);
바깥 for문은 count에 따른 줄의 수,
그리고 안의 for문들은 각 줄, 즉 바깥 for문이 한번 돌때마다 나타내야 하는 값을 출력한다.
=>join 메서드로도 풀어보자.
10871번 X보다 작은 수
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
const num = input[0].split(' ');
const arr = input[1].split(' ');
let result = [];
const N = Number(num[0]);
const X = Number(num[1]);
for(let i=0; i<N; i++){
if(arr[i]<X){
result.push(arr[i]);
}
}
console.log(result.join(' '));
input값들을 줄 단위로 나눠 배열에 저장한 후
첫번째 줄과 두번째 줄을 각각 ' '로 원소들을 구분한 배열로 만든다.(num, arr)
num 배열의 원소들을 숫자 N X 로 변수를 만든 다음
for문을 돌려 X보다 작은 arr 배열 원소들을 result 배열에 추가한다.
join 메서드로 배열의 요소들을 공백으로 나눠 문자열로 출력한다.
for문 문제풀이를 마치며..
확실히 자바스크립트에서 문자를 입력받고 출력하는 방법이 다른 언어들과 조금 다르다는 걸 느꼈다.
앞으로 더욱더 익숙해지도록 많이 문제를 접해보고 연습해보아야 겠다.
'ALGORITHM' 카테고리의 다른 글
[백준/ node.js] while문 - 10951번 A+B-4 (0) | 2021.06.25 |
---|---|
[백준/ Javascript] while문 - 10952번 A+B-5 (0) | 2021.06.24 |
Node.js 로 입력 받기(fs모듈, readline모듈) (0) | 2021.06.03 |
[백준/ node.js] if문 문제풀이 (0) | 2021.06.02 |
[백준 node.js] 입출력과 사친연산(2) -입력 받기 (0) | 2021.06.02 |