46일차 - 2022.04.18

안병욱·2022년 4월 17일
0

Baekjoon에서 문제풀이


1) 문제 : 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. 각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.

고민과정
기존 풀이방법이 큰 틀의 방향성은 맞다고 생각해서 틀린 부분을 천천히 보았는데


풀이
1.

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

let a = "";
let T = parseInt(input[0]);


    for(let i = 1; i<=T ; i++) {
        let A = input[i].split(' ')[0];
        let B = input[i].split(' ')[1];
        
        a += parseInt(A) + parseInt(B) + `\n`;
    }

     console.log(a); 

이때 줄마다 출력시키기 위해 \n를 쓸때 ''와 `` 둘 모두 사용가능한 점 알게됨.
그리고 문제에 나와있는 1이상 1000이하의 조건을 다른 문제처럼 if문을 이용하려 했는데 오류가 발생하는데 원인을 아직 정확히 모르는 상태

  1. readline 모듈로도 시도해보았는데

const readline = require('readline');

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

const input = [];

rl.on('line', function(line) {
    input.push(line);
    
}).on('close', function() {
    
    let a = '';
    const T = parseInt(input[0]);

for(let i=1; i<= T; i++) {
    let A = input[i].split(' ')[0];
    let B = input[i].split(' ')[1];
    a += parseInt(A) + parseInt(B) + `\n`; 
    
    }
    
    
    console.log(a);

    
    process.exit();
});

동일하게 if문을 추가할때 오류 발생. 문제에 주어진 조건을 추가하지 않아도 정답이 되는게 BaekJoon을 하면서 의아한 부분이긴 하지만 넣으려하는데 안되는건 처음이라 더 고민해보겠음.


  • a를 나타낼때 기존에 시도하던
a += `${A+B} + \n`;

는 출력초과가 뜨는데

a += parseInt(A) + parseInt(B) + `\n`;

로 하니 해결됨.
출력초과는 너무 많은 출력을 요했을때 발생한다는데 정확한 차이를 설명 못하겠음. 더 노력요망.


하루 돌아보며

말 그대로 문제는 맞혔지만 이게 중요한게 아니고 왜 이렇게 되고 얘는 왜 안되는지를 알아야 되는데 이부분이 해결이 안됨.
24일차에 했던 콜백함수를 기본서로 읽어보았는데 다시 학습이 필요할것 같아 내일 이어서 학습예정

공부 출처

BaekJoon


위의 내용은 공부중 본인이 이해한 내용으로 몇몇 틀린 내용이 있을 수 있습니다.
회독 혹은 공부간 틀린 내용 발견시 수정하겠습니다

profile
working hard

1개의 댓글

comment-user-thumbnail
2022년 4월 18일

반복문 내에서 input[i].split(' ')을 두번씩이나 할 필요가 있을까요?

답글 달기