[백준] 1000번, A+B 출력

권태형·2023년 11월 21일

알고리즘

목록 보기
2/33

중요한 점은 입력받은 값을 가지고 출력값을 도출 해야하는 점이다. 일부 문제들은 입력값을 직접 A또는 B로 할당해 주었다면, 이 문제는 콘솔창에서 입력된 값을 코드 로직에 가져와서 담고, 이를 더해 다시 출력해 줘야한다.

A+B와 같은 매우 간단해 보이는 문제에서 나는 내 짧은 배움을 볼 수 있었다. 지금까지 API를 이용해 프론트에서 값을 받아서 결과를 return해주는 작업을 주로 했었지, 콘솔창에서 백엔드가 입력을 받을 일이 얼마나 있었을까.... 나는 아직 그런경험이 없었기에 처음에 조금 당황했다.


JS

  • 오답 1
    //JS 오답 1
    const sum = (input) => {
       numberArray = input.split(" ")
       const A = +numberArray[0]
       const B = +numberArray[1]
       
       console.log(A+B)
    }
    업로드중..
    처음에는 그냥 함수하나 만들어서 뽑아주려 했지만 바로 틀렸습니다! sum 함수를 선언은 했지만 호출도 안됬고, 인자도 포함되지 않았다.

그래서 node에서 콘솔입력값을 얻는 방법을 찾아보니 process.stdin.on("data" , () => {})과 같은 방법이 있었다.
이는 데이터를 수신할 때 마다 호출되는 이벤트 리스너로, 콘솔창에 data가 들어오면 자동으로 실행된다.

  • 오답 2
    //JS 오답 2
    const sum = (input) => {
       numberArray = input.split(" ")
       const A = +numberArray[0]
       const B = +numberArray[1]
       
       console.log(A+B)
    }
    process.stdin.on('data',(input) => { sum(input) })
    이 방법은 TypeError를 뱉어냈다. process.stdin.on 의 input에 대한 타입은 Buffer타입이기 때문에 바꿔줘야 하더라.
  • 정답
    //JS 정답 1
    const sum = (input) => {
       numberArray = input.split(" ")
       const A = +numberArray[0]
       const B = +numberArray[1]
       
       console.log(A+B)
    }
    process.stdin.on('data',(input) => { sum(input.toString()) })

풀고나서 다른사람들의 정답을 확인해 보니 예제도 그렇고 대다수의 문제풀이는 fs라는 내부모듈을 불러와 푸는 방식이었다.

  • 다른 정답

    //JS 정답 2
    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);

C#

C#으로 문제를 풀 때는 위에서 얻은 정보를 바탕으로 입력값을 받는 방법을 찾고 실행하였으나 처음엔 고비를 마셨다.

  • 오답 1
//C# 오답
class Program{
    static void Main(){
        string input = Console.ReadLine();
        string[] numbers = input.Split(" ");
        int A = (int)numbers[0];
        int B = (int)numbers[1];
        
        int result = A + B;
        Console.WriteLine(result);      
    }
}

문제는 int A = (int)numbers[0]; 의 Type에러 발생이다. 변환할 변수앞에 (Type)으로 변환하는 방식은 같은 기본형(int. float, double, short 등)에서만 동작하는 방식이라는 점을 찾고 문자를 숫자로 변환하기 위해 int.Prase()를 사용했다.

  • 정답
    //C# 정답
    class Program{
       static void Main(){
           string[] inputs = Console.ReadLine().Split(" ");
           int A = int.Parse(inputs[0]);
           int B = int.Parse(inputs[1]);
           
           int result = A + B;
           Console.WriteLine(result);      
       }
    }

예시 또한 크게 내 정답과 다르진 않았다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글