
피보나치 수열의 특정 항까지 계산하는 예제입니다.
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]내 풀이
let n = 10; // 원하는 항의 수
let result = [0, 1]; //배열
for (let i = 0; i < n - 2; i++) {
result.push(result[i] + result[i + 1]);
}
console.log(`피보나치 수열(${n}항):`, result);
강사님 풀이
const n = 10;
let a = 0; // 1항
let b = 1; // 2항
let temp = null; // 0
const results = []; // [0]
for (let i = 0; i < n; i++) {
results.push(a);
temp = a;
a = b;
b = temp + b;
}
console.log(results);
temp로 임시 저장소를 만들어서 구할 수도 있었다
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]내 풀이
let results = [];
for (let i = 1; i <= 100; i++) {
if (i === 1) continue; // 1은 소수가 아니므로 건너뛰기
let isPrime = true;
for (let j = 2; j < i; j++) {
if (i % j === 0) {
isPrime = false;
break;
}
}
if (isPrime) {
results.push(i);
}
}
console.log(results);
소수를 구하는 수학적인 방법과 중첩 반복문을 사용해야 한다는 건 이해했지만, 소수로 판별된 숫자들을 배열에 어떻게 추가해야 되는지 몰라서 못풀었었는데... 😵💫
불리언 값을 활용해서 풀 수 있었다
numbers (배열, 예: [5, 10, 15, 20, 25])[5, 10, 15, 20, 25]75내 풀이
const numbers = [5, 10, 15, 20, 25];
let results = 0;
for (const number of numbers) {
results3 += number;
}
console.log(results);
str (문자열, 예: "Hello, World!")"Hello, World!""!dlroW ,olleH"내 풀이
const str = "Hello, World!";
// 문자열 뒤집기 로직
let reversed = "";
for (let i = str.length - 1; i >= 0; i--) {
reversed += str[i];
}
console.log("뒤집힌 문자열:", reversed);
강사님 풀이
//while ver
const str = "Hello";
let reversed = "";
let index = str.length - 1;
while (index >= 0) {
reversed += str[index];
index--;
}
console.log(reversed);
while문으로 쓸 때는 index를 따로 지정해 줘야 된다
5! → 5 4 3 2 1
4! → 4 3 2 * 1
2! ⇒ 2 * 1
1! → 1
0! → 1
5120내 풀이
let n = 5;
let factorial = 1;
for (let i = 1; i <= n; i++) {
factorial *= i;
}
console.log(`${n}의 팩토리얼:`, factorial); // 출력 120
입력: 없음
출력
153
370
371
407
내 풀이
for (let i = 100; i <= 999; i++) {
let numbers = String(i);
let sum = 0;
for (const number of numbers) {
sum += number ** 3;
}
if (sum === i) {
console.log(i);
}
};
강사님 풀이
for (let i = 1; i < 10; i++) {
for (let j = 0; j < 10; j++) {
for (let k = 0; k < 10; k++) {
const sum = i * i * i + j * j * j + k * k * k;
const original = i * 100 + j * 10 + k;
if (sum === original) {
console.log(original);
}
}
}
}
for (let i = 100; i < 1000; i++) {
const one = i % 10; // 일의 자리 -> 9
const ten = ((i - one) / 10) % 10; // 129 -> 2
const hundred = (i - one - ten * 10) / 100; // 100 -> 1 777 -> 700/ 7= 7
if (one * one * one + ten * ten * ten + hundred * hundred * hundred === i) {
console.log(i);
}
}
각 자리수라는 말 보고 문자열로 바꿔서 반복문 돌려야겠다! 생각했지만 좀 더 수학적(?)으로 푸는 연습을 해야겠다
연습문제를 풀어보면 어떻게 풀어야 되는지는 알겠지만 코드로 바꾸는 게 어려운 것 같다. 프로그래밍적 사고라는 게 부족한 걸까… 와중에 암스트롱수는 이전에도 풀어본 적이 있는데 바로 안 풀어졌다(나 진짜 바본가...)
이것도 여러 유형을 접해보면 나아질 것 같아서 코테를 꾸준히 풀어보려 한다 강사님 풀이 보면서 못풀었던 문제들 다시한번 풀어봐야지 😮💨