티스토리 뷰

728x90
반응형

목차

     

    자바스크립트 문법에 익숙해지기 위해 가장 쉬운 알고리즘 문제를 풀었다가 당황을 했다.

     

    첫 번째는 Node.js로 실행하면 내 입력을 기다리지 않고 프로그램을 종료시켜 버렸기 때문이고,

     

    두 번째는 파이썬과 비교했을 때 코드의 길이가 굉장히 길고 한눈에 들어오지 않았기 때문이다.

     

    첫 번째 문제는 이전 글에서 해결했으니, 이번엔 알고리즘의 풀이를 보면서

     

    한 줄씩 읽으며 무슨 뜻인지 파악해야겠다.

     

    const

     

    먼저, 문제의 풀이를 보면 아래와 같다.

    const rl = require('readline').createInterface({
        input: process.stdin,
        output: process.stdout
    });
    
    rl.question("", (line) => {
        const [a, b] = line.split(" ").map(Number);
        console.log(a + b);
        rl.close();
    });

    숫자 두 개를 입력받아 더한 값을 출력하는 문제인데, 공백 포함 무려 10줄이나 된다.

     

    여기선 먼저 const 키워드에 대해 알아보자.

     

    const 키워드는 이름에서 짐작할 수 있듯이 상수를 선언하는 키워드이다.

     

    상수라 함은 값이 변할 수 없음을 가리키기 때문에, const로 한 번 할당된 값은 변경할 수 없다.

     

    이외에도 아래와 같은 특징을 같는다.

     

    • 블록 스코프: const로 선언된 변수는 선언된 블록 내에서만 접근할 수 있다.
    • 재선언 금지: 한 번 선언된 이후에는 같은 이름으로 변수를 다시 선언할 수 없다.
    • 초기화 필수: 당연하게도 선언과 동시에 초기화를 해주어야 한다. 그렇지 않으면 문법 오류로 간주된다.
    • 객체와 배열
      const로 선언된 변수에 객체 혹은 배열을 할당하는 경우, 해당 변수는 상수이지만 객체 혹은 배열의 내용은 변경할 수 있다.
      다만 해당 객체와 배열을 참조하는 변수는 상수이기 때문에 다른 객체나 배열로 재할당할 수 없다.
    • 가독성과 유지보수성
      위와 같은 성질 때문에 변경되지 않을 값을 선언할 때 사용하면 의도치 않은 값의 변경을 방지할 수 있다.
      또한 코드를 읽는 과정에서 상수임을 명확하게 알 수 있으므로 가독성과 유지보수성이 향상된다.

     

    Standard I/O

     

    계속해서 코드를 읽어가자.

    const rl = require('readline').createInterface({
        input: process.stdin,
        output: process.stdout
    });

    이 부분에서 변수 rl에 할당되는 값은 표준 입출력에 관한 내용이다. 조금 더 세세하게 정리하자면

     

    • 'readline' 모듈의 'createInterface() 함수를 호출해 입출력 인터페이스를 생성한다.
    • 입력은 process.stdin(표준 입력), 출력은 process.stdout(표준 출력)으로 설정된다.

    해당 모듈과 함수에 대해서 파보는 것도 좋지만, 일단 입출력을 위와 같이 처리한다는 것만 알고 넘어가자.

     

    question()

     

    rl.question("", (line) => {
        const [a, b] = line.split(" ").map(Number);
        console.log(a + b);
        rl.close();
    });

    rl.question()을 호출해 사용자로부터 입력을 받는다.

     

    여기서 첫 번째 매개변수는 콘솔에 출력할 메시지를 지정하며 두 번째 매개변수는 사용자 입력에 대한 콜백함수가 지정된다.

     

    여기서 입력된 값은 콜백함수의 매개변수 'line'으로 전달된다.

     

    split()

     

    rl.question("", (line) => {
        const [a, b] = line.split(" ").map(Number);
        console.log(a + b);
        rl.close();
    });

     

    • line.split(" ")은 입력된 문자열 'line'을 공백을 기준으로 분리해 배열로 반환한다.
    • map(Number)은 배열의 각 요소에 Number 함수를 적용해 숫자로 변환한다.
    • const[a, b]는 배열의 첫 번째와 두 번째 요소를 a와 b에 할당하는 것을 가리킨다.
    • console.log(a + b)는 입력된 숫자 a와 b를 더한 값을 출력한다.
    • rl.close()는 입력과 프로그램을 종료하는 역할을 한다. rl.question() 함수가 더 이상 호출되지 않도록 한다.
    반응형

    'JavaScript > JavaScript' 카테고리의 다른 글

    [JavaScript]console.log vs. alert / let vs. var  (0) 2023.06.16
    [JavaScript]자료형  (0) 2023.06.15
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/06   »
    1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30
    글 보관함