불과 몇달 전이지만 완전 처음 코딩에 입문했을 때, 백준에 있는 문제들이 어려워보이고
푸는게 멋있어보여서 ㅋ; 코테연습을 백준에서 먼저 시도했다.
그런데 백준에서는.. 자바스크립트는 답을 입력하기도 어려웠다.
그래서 초반 몇 문제 풀다가 답 입력하는 방식도 귀찮고 해서 프로그래머스로 옮겨갔다.
슬슬 1단계에 있는 쉬운 문제들은 끝나가서, 백준에서 막혔던 문제들이 떠올랐다.
이 문제는 문제 자체는 쉽지만, 결과가 시간초과로, 정답으로 나오지 않았다.
여태까지 풀기만 하면 장땡이라고 생각했지만, 성능과 효율에 대해 고민해보게 되었다..
혹시 나와 같은 사람들이 있을까 하여 답과 시간초과 코드를 비교해보고자 한다.
먼저 나는 이렇게 풀었다.
const fs = require("fs");
let input = fs.readFileSync(0).toString().trim().split('\n')
for(let i = 1; i<input.length; i++){
let num = input[i].split(' ')
console.log(Number(num[0])+Number(num[1]))
}
개행문자를 기준으로 요소를 구분하고,
각 요소를 공백을 기준으로 반복문 안에서 구분해준다.
그리고 첫번째 요소와 두번째 요소를 더해준다.
답은 일치하는데, 시간초과가 나온다.
직전에 풀었던 문제에서 내장함수를 반복문으로 돌리면서 성능에 관한 부분을 떠올렸기에,
그런 비슷한 내용일거라 생각했고, 그 생각을 가지고 다르게 접근해서 그런지, 맞았다.
이번엔 정답 코드이다.
const fs = require("fs");
let input = fs.readFileSync(0).toString().trim().split('\n')
let answer = ''
for(let i = 1; i<input.length; i++){
let num = input[i].split(' ')
answer+=(Number(num[0])+Number(num[1])+'\n')
}
console.log(answer)
거의 차이가 없다. 굳이 살피면, 더한 값을 반복문을 통해 나열하고 그 안에서 출력한 것과
더한 값을 answer에 개행을 더해 누적, 반복문 밖에서 출력한 것의 차이라고 생각한다.
그리고 이유를 생각해보자면..
확실치 않지만 console.log()가 반복되는 부분이 효율이 떨어지는 것인가 싶다.
혹시 이유를 아시는 분은 댓글로 알려주세요.
'개발 > 코딩테스트' 카테고리의 다른 글
[JavaScript] 자원에 맞게 글 출력하기 (0) | 2023.05.05 |
---|---|
[프로그래머스 | JavaScript] 배열 조각하기 (0) | 2023.05.02 |
[프로그래머스 | JavaScript] 예산 (0) | 2023.05.01 |
[프로그래머스 | JavaScript] 같은 숫자는 싫어 (0) | 2023.04.29 |
[프로그래머스 | JavaScript] 최대공약수와 최소공배수 간결 풀이 (0) | 2023.04.29 |