(과제 1)
https://www.acmicpc.net/problem/2438
2438호: 별을 따다 – 1
첫 번째 줄에 별 1개, 두 번째 줄에 별 2개, N줄에 별 N개입니다.
www.acmicpc.net
(내 코드)
let fs = require("fs");
let input = fs.readFileSync("dev/stdin").toString().split("\n");
let n = Number(input(0))
for(i=1;i<=n;i++){
console.log("*".repeat(i))
}
(코멘트 코드)
let result=""
for(let i=0;i<n;i++){
for(let j=0; j<=i;j++){
result += "*";
}
result += "\n"
}
console.log(result)
주석 코드에 이중 루프를 사용했는데 시간복잡도가 늘어나서 별로인 것 같은데…
(연습 2)
https://www.acmicpc.net/problem/15552
15552호: 패스트 A+B
테스트 케이스의 수 T는 첫 번째 줄에 지정됩니다. T는 최대 1,000,000입니다. 다음 T 행에는 각각 A와 B라는 두 개의 정수가 주어지며 A와 B는 1보다 크거나 같고 1,000보다 작거나 같습니다.
www.acmicpc.net
(내 오류 코드)
let fs = require("fs");
let input = fs.readFileSync("dev/stdin").toString().split("\n");
let n = Number(input(0))
for(i=1;i<=n;i++){
console.log(Number(input(i).split(" ")(0)+Number(input(i).split(" ")(1))))
}
시간이 지남에 따라 뜸;
(코멘트 코드)
let fs = require("fs");
let input = fs.readFileSync("input.txt").toString().split("\n");
let n = Number(input(0));
let answer="";
for(let i=1;i<=n;i++){
let data=input(i).split(" ");
let a = Number(data(0))
let b = Number(data(1))
answer+= a+b+ "\n";
}
console.log(answer)
(통찰력)
각 계산에 대한 console.log를 지속적으로 기록하면 출력 시간이 늘어나므로 동시에 수집하고 기록하는 것이 시간을 더욱 줄이는 방법입니다.
미묘하지만 다른 코드 …
for(let i=1;i<=n;i++){
let data=input(i).split(" ");
let a = Number(data(0))
let b = Number(data(1))
answer=answer+ (a+b)+ "\n";
}
console.log(answer) // 2 4 6 8 10
for(let i=1;i<=n;i++){
let data=input(i).split(" ");
let a = Number(data(0))
let b = Number(data(1))
answer+= a+b+ "\n";
}
console.log(answer) //2 4 6 8 10
for(let i=1;i<=n;i++){
let data=input(i).split(" ");
let a = Number(data(0))
let b = Number(data(1))
answer = answer+ a+b+ "\n";
}
console.log(answer) //11,22,33,44,55
1과 2의 경우 a+b를 숫자로 먼저 계산한 후 답에 더하고, 3의 경우 answer+a(문자열 계산)을 먼저 수행한 다음 문자열+b(문자열) 계산을 수행합니다.
