책으로만 공부하는 습관을 바꾸기 위해 백준 단계별로 풀기를 같이 할 것이다
일단 기본 문법을 하고 바로 백준 풀어야지 풀면서 모르는 걸 추가로 공부해 봐야겠다
해보면서 방향을 수정하다 보면 맞는 공부 방법이 나올 것 같다
https://www.acmicpc.net/step/1 이 링크로 들어가면 단계별로 풀 수 있습니다^-^
(2557) Hello World! 출력하기
console.log("Hello World!");
(1000) 두 정수 입력 받고, 합 출력하기
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split(' ');
const A = parseInt(input[0]);
const B = parseInt(input[1]);
console.log(A + B);
입력받아야 하므로 위 2줄을 입력해야 한다.
fs (file system) 모듈 불러오기
입력값을 읽어오기 위해서는 file system을 요구해야함
const fs = require("fs");
파일 읽어오기 (동기)
fs.readFileSync('/dev/stdin').toString()
백준에서 JS로 문제풀기 위해서는 이렇게 해야한다고 한다
/def/stdin 이 경로 외워야한다
readFile(비동기) / readFileSync(동기): 코드를 순차적으로 실행하기 위해 readFileSync를 이용
동기식
순차적으로 일을 처리한다.
특정 작업이 수행중이라면 다음 작업을 받지 않고 해당 작업이 끝날떄까지 기다린다비동기식
동기식과 다르게 들어오는 모든 일을 우선 받아두고 끝났다는 이벤트가 전달되면 해당 이벤트를 처리한다비동기 키워드들 : Callback, Promise, Promise.all, async , await
파일 읽어오기 (split)
문자열을 일정한 구분자로 잘라서 배열로 지정
코드에서는 공백을 기준으로 나누어 배열로 만들었다
문제에서 두 정수라고 했으므로 parseInt
split 메서드에 의해 문자열 배열로 변환되기 때문에 input[0]으로 접근
const A = parseInt(input[0]);
const B = parseInt(input[1]);
(1001) 두 정수 입력 받고, 차 출력하기
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split(" ");
const A = parseInt(input[0]);
const B = parseInt(input[1]);
console.log(A - B);
(10998) 두 정수 입력 받고, 곱 출력하기
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split(" ");
const A = parseInt(input[0]);
const B = parseInt(input[1]);
console.log(A * B);
(1008) 두 정수 입력 받고, 나누기 출력하기
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split(" ");
const A = parseInt(input[0]);
const B = parseInt(input[1]);
console.log(A / B);
(10869) 두 자연수 입력 받고 더하기, 빼기, 곱하기, 나누기, 나머지 출력하기
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split(" ");
const A = parseInt(input[0]);
const B = parseInt(input[1]);
console.log(A + B);
console.log(A - B);
console.log(A * B);
console.log(parseInt(A / B));
console.log(A % B);
JS에서 몫만 구하기 위해서는 parseInt(A / B) 이렇게 해야한다
(10926) 이미 존재하는 아이디일때 놀람 출력
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim();
console.log(`${input}??!`);
trim()
문자열 양 끝의 공백을 제거한 문자열을 반환
공백이 없어도 예외가 발생하지 않고 새 문자열이 반환(즉 복사본)
->한 쪽 긑의 공백만 제거한 문자열을 반환하려면 trimStart(), trimEnd() 사용하기
(18108) 불기 연도를 서기 연도로 변환하기
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split(" ");
const A = parseInt(input[0]);
console.log(A - 543);
(10430) 세 수가 주어졌을때, 4가지 값을 구하는 프로그램
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' ');
const a = parseInt(input[0]);
const b = parseInt(input[1]);
const c = parseInt(input[2]);
console.log((a+b)%c);
console.log( ((a%c)+(b%c))%c );
console.log( (a*b%c) );
console.log( ((a%c)*(b%c))%c );
(2588) 곱셈
const fs = require('fs');
const input1 = fs.readFileSync('/dev/stdin').toString().split('\n');
const a = Number(input1[0]); // 첫 번째 줄
const b = input1[1]; // 두 번째 줄 각 문자
const b1 = a * Number(b[2]); //일의자리
const b2 = a * Number(b[1]); //십의 자리
const b3 = a * Number(b[0]); //백의 자리
const total = a * Number(b); //전체 자리 곱
console.log(b1);
console.log(b2);
console.log(b3);
console.log(total);
Number()
숫자로 표현하는 객체이다
문자열을 숫자로 변환할때 많이 사용
오로지 숫자 타입의 문자열만 Number 타입으로 변환한다
소수점을 표시 할 수 있다
(11382) 꼬마 정민
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' ');
const a = parseInt(input[0]);
const b = parseInt(input[1]);
const c = parseInt(input[2]);
console.log(a + b + c);
(10171) 고양이
console.log(`\\ /\\
) ( ')
( / )
\\(__)|`)
백틱을 사용하면 여러 줄을 한 번에 출력할 수 있다
백 슬래시는 2번 입력해야 출력된다
\n 줄바꿈
\\ 백슬래시
\' 작은 따옴표
\" 큰 따옴표
(10172) 개
console.log(`|\\_/|
|q p| /}
( 0 )"""\\
|"^"\` |
||_/=\\\\__|`)