📌 문제 링크
https://www.acmicpc.net/problem/15552
📌 문제 탐색하기
- 각각 두 정수 A와 B가 주어지면 더하여 하나씩 순서대로 출력한다.
시간복잡도
- O(n)
📌 코드 설계하기
- 문제의 input을 개행으로 분리합니다.
- 덧셈이 필요한 부분만 배열로 가져와 띄어쓰기로 분리한 후 숫자로 변환합니다.
- 모든 값을 더해줄 `sum`배열을 초기화합니다.
- 반복문을 돌면서 덧셈이 필요한 배열의 각 두 수의 합을 sum 배열에 추가해 줍니다.
- sum 배열로 모든 결과를 한번에 출력합니다.
📌 시도 회차 수정 사항 (Optional)
0회차
- 처음에는 `reduce()`를 쓰면 될 것이라고 생각했다. 하지만 이 문제의 요구사항은 각 줄의 두 수를 각각 더해서 바로바로 출력하는 형태이며 `reduce()`는 배열 전체를 하나의 결과로 줄일 때 적합하다.
- 그렇기 때문에 이 문제는 for문을 사용하는 것이 더 적합하다.
1회차
const fs = require("fs");
const filePath =
process.platform === "linux" ? "/dev/stdin" : __dirname + "/input1.txt";
const [_, ...arr] = fs.readFileSync(filePath).toString().trim().split("\n");
const numberArr = arr.map((x) => x.split(" ").map(Number));
for (let i = 0; i < numberArr.length; i++) {
let sum = 0;
sum += numberArr[i][0] + numberArr[i][1];
console.log(sum);
}
- 처음에는 위와 같이 for문 안에서 값을 더해서 바로 출력하는 형태로 작성했었는데 시간초과가 발생했다.
- `console.log`를 여러 번 호출하는 것보다 한 번에 호출하는 방식이 더 효율적이기에 `number`타입이였던 `sum`을 `number[]`로 바꾸어서 한번에 출력하는 형태로 수정하였다.
📌 정답 코드
//https://www.acmicpc.net/problem/15552
export {};
const fs = require("fs");
const filePath =
process.platform === "linux" ? "/dev/stdin" : __dirname + "/input1.txt";
const [_, ...arr] = fs.readFileSync(filePath).toString().trim().split("\n");
const numberArr = arr.map((x: string) => x.split(" ").map(Number));
const sum: number[] = [];
for (let i = 0; i < numberArr.length; i++) {
sum.push(numberArr[i][0] + numberArr[i][1]);
}
console.log(sum.join("\n"));
'코딩 > 알고리즘' 카테고리의 다른 글
백준) 8393 - 합 JS (0) | 2024.11.07 |
---|---|
백준) 25304 - 영수증 JS (1) | 2024.11.06 |
백준) 11382 - 꼬마 정민 JS (0) | 2024.11.04 |
백준) 11866 - 요세푸스 문제 0 JS (0) | 2024.10.27 |
백준) 2193 - 이친수 JS (1) | 2024.10.26 |