알고리즘/백준

[백준 JS] 10951번 A+B - 4

Happy Programmer 2023. 3. 8. 06:49

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

 

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

 

출력

각 테스트 케이스마다 A+B를 출력한다.

 

 

풀이

이번에는 초반에 진행헀던 A,B 관련 문제들에서 한단계 더 나아가서

여러개의 테스트케이스를 처리해야 하는 문제로

input은 split('\')만 처리해서 추가적으로 가공해도 되고

.split('\').map(el => el.split(' ').map(Number))형태로 가공해도 된다.

 

조금 생소해 보일 수 있지만

이전에 map(Number)를 통해 배열 내부의 값들을 한번에 처리했던 것 처럼

각각의 한줄씩 쪼개진 문자열 '1 1' 형태를 ['1', '1']로 변경하고

다시 .map(Number)를 통해 [1, 1]로 변경하는 작업이라고 볼 수 있다.

 

같은 작업이지만 위에서 split('\') 까지만 처리했다면 for문 내부에서 진행할 경우 아래처럼 처리할 수도 있다.

for(let i = 0 ; i < input.length ; i++){

  const [a, b] = input[i].split(' ').map(Number)

}

 

초반에 너무 길게 가공하는 것이 보기 불편하다면

위에서 언급한 코드로 진행하는 것이 가독성면에서 더 좋을 수 있을 것 같기도 하다.

 

출력 또한 각각의 경우마다 출력해도 되겠지만

이전 문제들에서 종종 언급했던 것 처럼

뒤로 갈수록 출력 요구횟수가 늘어나기 때문에

result라는 배열을 선언해준 다음 그 안에 값들을 넣어두고 join을 통해 출력 형태로 가공하는 것이 좋다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(el => el.split(' ').map(Number))
const result = []
for(i = 0 ; i < input.length ; i++){
    const [a, b] = input[i]
    result.push(a+b)
}
console.log(result.join('\n'))
const input = `1 1
2 3
3 4
9 8
5 2`.split('\n').map(el => el.split(' ').map(Number))
const result = []
for(i = 0 ; i < input.length ; i++){
    const [a, b] = input[i]
    result.push(a+b)
}
console.log(result.join('\n'))