수를 입력받아 홀수인지 여부를 리턴
function isOdd(num) {
1. 만약 num이 0보다 작은 음수일 경우 (-num) + (-)를 하여 양수로 만들어준다.
if (num < 0) {
num = -num;
}
2. 이제 반복조건은 num이 0보다 클 경우에 반복문이 돌아간다고 설정한다.
만약 num이 1이랑 같을 경우에는 true를 리턴, num이 0과 같을 경우에는 false를 리턴한다.
while (num >= 0) {
if (num === 1) {
return true;
} else if (num === 0) {
return false;
}
num = num - 2;
}
3. 반복문을 빠져나오지 않은 상태에서 num이 1도 아니고 0도 아닐 경우,
-2를 해줘서 num을 2씩 줄여준다.
이제 num - 2가 된 상태에서 다시 반복조건에 들어간다.
4. num이 0 혹은 1이 될 때까지 반복문을 실행해준다.
}
수(num)를 입력받아 1을 포함하여 num개의 홀수로 구성된 문자열을 리턴
function makeOddDigits(num) {
1. 홀수로 구성된 문자열을 담을 변수를 선언해준다.
let result = '';
2. i가 홀수가 될 때마다 1씩 카운팅 해주는 변수를 선언해준다. 0부터 카운팅 시작.
1을 포함한 홀수를 리턴해야 하기 때문에 i는 1부터 시작해준다.
count는 0부터 시작하고, num개의 횟수가 됐을 때 반복문을 종료해준다.
3. 카운트한 횟수(count)가 num보다 작을 경우,
결과값에 i를 더해준 후 count는 1씩 더 해주고,
i는 홀수로 이어져야 하기 때문에 2를 더해줘서 3-5-7 식으로 홀수를 만들어준다.
let count = 0;
let i = 1;
while (count < num) {
result = result + i;
count++;
i = i + 2;
}
return result;
}
두 개의 수를 입력받아 두 수를 포함해 두 수 사이의 수 중 2의 배수의 개수를 리턴
function makeMultiplesOfDigit2(num1, num2) {
1. 작은 순서대로 인자가 주어지는 것이 아니기 때문에
먼저 start와 end 변수에 하나씩 넣어주고, 경우의 수가 다를 경우 위치를 바꿔준다.
let start = num1;
let end = num2;
if (num1 > num2) {
start = num2;
end = num1;
}
2. 0은 2의 배수가 아니라고 가정하기 때문에, start가 0일 경우 start를 1로 바꿔준다.
if (start === 0) {
start = 1;
}
3. start부터 시작해서 end까지의 숫자 중 2의 배수의 '개수'를 리턴하는 것이기 때문에,
개수를 세어줄 count라는 변수를 만들어준다.
4. 그리고 2의 배수를 걸러주는 조건문이 true일 경우 count+1를 해준다.
let count = 0;
for (let i = start; i <= end; i++) {
if (i % 2 === 0) {
count++;
}
}
return count;
}
수를 입력받아 약수(factor)의 합을 리턴
function getSumOfFactors(num) {
1. 조건문이 true가 될 때마다 값을 더해줄 변수를 선언해준다.
let sum = 0;
2. 반복문 초기값을 1부터 시작하여 num이 될 때까지 돌아가게 반복조건을 설정해준다.
그리고 만약 num을 i로 나눴을 때 딱 떨어지는 경우 i를 sum에 더해준다.
이 경우 i는 num의 약수가 되기 때문이다.
3. 반복문이 끝나면 최종 sum의 값을 리턴해준다.
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
sum = sum + i;
}
}
return sum;
}
수를 입력받아 소수(prime number)인지 여부를 리턴
function isPrime(num) {
1. 2는 소수 중 유일한 짝수이기 때문에 조건문을 따로 써서 true를 리턴해준다.
if (num === 2) {
return true;
}
2. i를 2부터 시작하기 때문에 num을 2로 나눠줬을 때 딱 떨어질 경우,
num은 짝수이기 때문에 false를 리턴해준다.
3. 조건문이 끝나면 i++을 해주면서 반복문이 돌아간다.
4. i <= num이 아닌 이유
마지막에 num을 num으로 나눠주면 딱 맞아떨어져서 false가 리턴되기 때문이다.
num이 소수일 경우에도 num으로 나눠주면 false가 리턴되기 때문에 num 직전의 수까지만 실행해준다.
for (let i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
수를 입력받아 2부터 해당 수까지의 소수(prime number)들을 리턴해야 한다.
string 타입을 리턴2-3-5-7의 형식으로 리턴double for loop)을 사용function listPrimes(num) {
1. 짝수 중 유일한 소수인 2는 리턴값의 가장 앞에 들어가기 때문에 미리 문자열로 만들어 할당해준다.
let result = '2';
2. 첫 번째 반복문은 i부터 num까지 반복해주기 위한 코드이다.
result에 할당된 2 다음 숫자인 3을 초기값으로 설정하고 반복될 때마다 1씩 더해준다.
for (let i = 3; i <= num; i++) {
3. 소수인지를 판단해줄 isPrime이란 변수를 선언해준다.
let isPrime = true;
4. 대입한 숫자(i)가 약수인지를 판단하기 위한 두 번째 반복문을 만들어준다.
i가 짝수인지 판단하기 위해 초기값 j를 2로 할당해준다.
만약 i를 j로 나눴을 때 나머지가 0으로 떨어질 경우, i는 짝수이므로 소수가 될 수 없다.
for (let j = 2; j < i; j++) {
if (i % j === 0) {
isPrime = false;
}
}
5. 두 번째 반복문을 빠져나온 뒤 (아직 첫 번째 반복문 안에 있는 상태)
소수인지 판단해주는 isPrime이 true일 경우의 조건문을 만들어주고,
true일 경우 result에 '-'와 해당 숫자(소수)인 i를 더해서 할당해준다.
if (isPrime === true) {
result = result + '-' + i;
}
}
return result;
}
문자열을 입력받아 해당 문자열에 등장하는 각 문자(letter)를 가지고 만들 수 있는 길이 2의 문자열들을 리턴
function makePermutations(str) { // 'abcd'
let result = '';
let start = 0;
for (let i = start; i < str.length; i++) {
for (let j = 0; j < str.length; j++) {
result = result + str[i] + str[j] + ',';
}
}
return result.slice(0, result.length - 1);
}
문자열을 입력받아 해당 문자열에 중복된 문자(letter)가 존재하는지 여부를 리턴해야 한다.
function hasRepeatedCharacter(str) {
for (let i = 0; i < str.length; i++) {
for (let j = i + 1; j < str.length; j++) {
if (str[i] === str[j]) {
return true;
}
}
}
return false;
}
문자열을 입력받아 해당 문자열을 처음부터 한 글자(letter)씩 다시 작성
한 글자를 추가할 때마다 부분적으로 완성된 문자열을 전부 이어붙인 문자열을 리턴
str.slice, str.substr, str.substring 사용은 금지function makeMarginalString(str) { // str = 'abc'
1. 최종적으로 리턴할 문자열이 담을 변수를 선언해준다.
let result = '';
2. j의 0번째 문자부터 입력 후, 그 다음 문자 또한 0번째부터 다시 입력해줘야 하기 떄문에
j <= i를 반복조건으로 만들어준다.
3. i가 0이고 j도 0일 때, 'a'를 출력, 이후 j++를 해준다.
i가 0이고 j가 1이 되면, 반복조건이 false가 되기 때문에 첫번째 for문으로 가서 i++를 해준다.
i가 1이고 j가 0일 때, 'aa'를 출력, 이후 j++를 해준다.
i가 1이고 j가 1이 되면, 'aab'를 출력, 이후 j++를 해준다.
i가 1이고 j가 2가 되면, 반복조건이 false가 되기 때문에 첫번째 for문으로 가서 i++를 해준다.
i가 2이고 j가 0일 때, 'aaba'를 출력, 이후 j++를 해준다.
i가 2이고 j가 1일 때, 'aabab'를 출력, 이후 j++를 해준다.
i가 2이고 j가 2일 때, 'aababc'를 출력, 이후 j++를 해준다.
i가 2이고 j가 3일 때, 반복조건이 false가 되기 때문에 반복문은 종료된다.
for (let i = 0; i < str.length; i++) {
for (let j = 0; j <= i; j++) {
result = result + str[j]; // 'aab
}
}
return result;
}