최종 수정 : 24.12.29
JavaScript 반복문 문제 풀이
1. n이 주어졌을 때, 1부터 n까지의 합을 구하는 프로그램을 작성하시오.
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let num = Number(input[0]);
let sum = 0;
for (let i = 1; i <= num; i++) {
sum += i;
}
console.log(sum);
// 다른 풀이(가우스 공식)
console.log(num * (num + 1) / 2);
핵심 아이디어
- 자연수 N의 최댓값은 10,000이다.
- 따라서, 단순히 1부터 10,000까지의 값을 차례대로 더해도 괜찮다.
- 이 경우 시간 복잡도 O(N)이다.
다른 풀이처럼, 등차수열의 합(가우스 공식)을 이용한 풀이방법은 시간 복잡도와 관련이 없어진다. 즉, 상수시간 O(1)이다.
2. N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let number = Number(input[0]);
for (let i = 1; i <= 9; i++) {
console.log(`${number} * ${i} = ${number * i}`);
}
// 다른 풀이
for (let i = 2; i <= 9; i++) {
for (let j = 1; j <= 9; j++) {
console.log(`${i} * ${j} = ${i * j}`);
}
console.log('');
}
핵심 아이디어
- 단순히 1단부터 N단까지의 반복 문법을 이용하면 된다.
- 2중 반복 문법을 사용하여 문제를 해결할 수 있다.
3. 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let starCount = Number(input[0]);
let result = '';
for (let i = 0; i < starCount; i++) {
for(let j = 0; j <= i; j++) {
result += "*";
}
result += "\n"
}
console.log(result);
// 다른 풀이
for (let i = 1; i <= starCount; i++) {
console.log('*'.repeat(i);
}
// 다른 풀이
for (let i = 1; i <= starCount; i++) {
console.log(Array(i + 1).joi('*'));
}
핵심 아이디어
- 2중 반복 문법을 이용하여 문제를 해결할 수 있다.
4. 빠른 A+B
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let testCase = Number(input[0]);
let answer = '';
for (let t = 1; t <= testCase; t++) {
let data = input[t].split(' ');
let a = Number(data[0]);
let b = Number(data[1]);
answer += a + b + '\n'
}
console.log(answer);
// 다른 풀이
const result = input
.slice(1, testCase +1)
.map(line => {
const [a, b] = line.split(' ').map(Number);
return a + b;
})
.join('\n');
console.log(result);
핵심 아이디어
- JavaScript를 이용해 문자열을 출력할 수 있어야 한다.
- 빠르게 출력하기 위해 하나의 문자열 변수에 정보를 담은 뒤에 한꺼번에 문자열을 출력한다.
- 한 줄(line)을 출력할 때마다 console.log()를 수행하면 많은 시간이 소요된다.
- 모든 "줄(line)"에 대한 정보를 하나의 문자열에 담았다가 한꺼번에 출력한다.
참고
패스트 캠퍼스(Javascript 코딩테스트 131개 예제 & CS지식으로 끝내기) Ch 01. 5강
'코딩테스트 > 문제 풀이' 카테고리의 다른 글
JavaScript 조건문 문제 풀이 (0) | 2024.12.29 |
---|---|
JavaScript 입출력 문제 풀이 (0) | 2024.12.29 |
문제 풀이를 위한 JavaScript 핵심 문법 (0) | 2024.12.29 |
댓글