• Feed
  • Explore
  • Ranking
/
/
    백준

    백준 JS 풀기 - 입출력과 사칙연산

    이제는 더 이상 물러날 곳이 없다
    JSJavaScript백준코테
    민
    민경
    2024.07.17
    ·
    6 min read

    책으로만 공부하는 습관을 바꾸기 위해 백준 단계별로 풀기를 같이 할 것이다

    일단 기본 문법을 하고 바로 백준 풀어야지 풀면서 모르는 걸 추가로 공부해 봐야겠다

    해보면서 방향을 수정하다 보면 맞는 공부 방법이 나올 것 같다

    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 )"""\\
    |"^"\`    |
    ||_/=\\\\__|`)

    until-877







    - 컬렉션 아티클