버그를 찾자
- 문자열을 입력받아 버그('#')의 인덱스를 리턴
- number 타입을 리턴
- 반복문(for)문을 사용
function findTheBug(word) {
//i번째에 있는 문자열이 버그와 같냐
for(let i = 0 ; i < word.length ; i++){
if (word[i] === '#'){
return i;
}
}
}
입력받은 수의 합 구하기
- 수를 입력받아 0부터 해당 수까지의 합을 리턴
- 반복문(for)문을 사용
- umber 타입을 리턴
function sumTo(num) {
sum = 0
for(let i = 0 ; i <= num ; i++){
sum += i;
}
return sum;
}
입력받은 수가 홀수일까?
- 수를 입력받아 홀수인지 여부를 리턴
- boolean 타입을 리턴
- for문 사용은 금지, 반복문(while)문을 사용
- 나눗셈(/), 나머지(%) 연산자 사용은 금지
- 0은 짝수로 간주
function isOdd(num) {
//받은 매개변수가 홀수면 true 리턴
if (num < 0){ // num이 음수일 경우 Math.abs()를 사용해 절댓값으로 바꿔 줌
num = Math.abs(num);
}
while (num >= 0){
if(num === 1){
return true;
}
else if (num === 0){
return false;
}
num -= 2;
}
}
입력받은 수의 factorial 구하기!
- 수를 입력받아 n-factorial 값(n!)을 리턴
- number 타입을 리턴
- 반복문(for)문을 사용
- factorial(0)은 1로 정의
- 음수 입력 X
function factorial(num) {
result = 1;
if (num <= 0){
return 1;
}
for (let i = 1 ; i <= num ; i++){
result *= i
}
return result;
}
입력받은 수만큼 문자열 반복
- 문자열과 수를 입력받아 반복된 문자열을 리턴
- string 타입을 리턴
- 0을 입력받은 경우, 빈 문자열을 리턴
function repeatString(str, num) {
result = ''
for(let i = 1; i <= num ; i++){ // 입력된 수만큼 str이 반복
result += str;
}
return result;
}
1부터 입력받은 수까지 출력
- 수(num)를 입력받아 1부터 num까지의 정수로 구성된 문자열을 리턴
- string 타입을 리턴
- 반복문(for)문을 사용
- 숫자(number string) 사이의 구분 X
function makeDigits(num) {
result = ''
for(let i = 1; i <= num ; i++){
result += i;
}
return result;
}
1부터 입력받은 수까지 출력('-'로 구분)
- 수(num)를 입력받아 1부터 num까지의 정수로 구성된 문자열을 리턴
- string 타입을 리턴
- 반복문(while)문을 사용
- 숫자(number string) 사이를 '-'로 구분 ex) '1-2-3-4-5'
function makeDigits2(num) {
start = 2;
result = '1';
while (start <= num){
result += `-${start}`;
start++;
}
return result;
}
입력받은 수만큼 홀수 출력
- 수(num)를 입력받아 1을 포함하여 num개의 홀수로 구성된 문자열을 리턴
- string 타입을 리턴
- 반복문(while)문을 사용
function makeOddDigits(num) {
let i = 1;
let count = 1;
result = ''
while (count <= num){
result += String(i);
i += 2;
count ++;
}
return result;
}
입력받은 수의 3의 배수 출력
- 수를 입력받아 1부터 해당 수까지의 수 중에서 3의 배수로만 구성된 문자열을 리턴
- string 타입을 리턴
- 반복문(for)문을 사용
- 3의 배수가 없을 경우, 빈 문자열을 리턴
function makeMultiplesOfDigit(num) {
result = '';
for( let i = 1 ; i <= num ; i++){
if(i % 3 === 0){
result += i
}
}
return result;
}
두 수 사이의 2의 배수 개수 출력
- 두 개의 수를 입력받아 두 수를 포함해 두 수 사이의 수 중 2의 배수의 개수를 리턴
- 반복문(for)문을 사용
- num1 > num2일 수 있음
- 0은 2의 배수가 아니라고 가정
function makeMultiplesOfDigit2(num1, num2) {
start = num1;
end = num2;
count = 0;
if(num1 > num2){
start = num2;
end = num1;
}
if(start === 0){
start = 1;
}
for(let i = start ; i <= end ; i++){
if(i % 2 === 0){
count++
}
}
return count;
}
str에서 letter가 등장하는 횟수
- 문자열과 문자를 입력받아 문자열에서 문자(letter)가 등장하는 횟수를 리턴
- number 타입을 리턴
- 반복문(for)문을 사용
- 빈 문자열을 입력받은 경우, 0을 리턴
function countCharacter(str, letter) {
count = 0;
for(let i = 0 ; i < str.length ; i++){
if(str[i] === letter){
count++;
}
}
return count;
}
입력받은 숫자 문자열 중 가장 큰 숫자 찾기
- 숫자 문자열을 입력받아 문자열을 구성하는 각 숫자 중 가장 큰 수를 나타내는 숫자를 리턴
- string 타입을 리턴
- 반복문(for)문을 사용
- str.split 사용은 금지
- 빈 문자열을 입력받은 경우, 0을 리턴
function getMaxNumberFromString(str) {
isMax = '';
if (str === ''){
return '0';
}
for(let i = 0 ; i < str.length ; i++){
if( str[i] > isMax){
isMax = str[i];
}
}
return isMax;
}
- 문자열과 두 개의 문자(from, to)를 입력받아, 문자열에 등장하는 특정 문자(from)가 다른 문자(to)로 바뀐 문자열을 리턴
- string 타입을 리턴
function replaceAll(str, from, to) {
result = '';
for(let i = 0 ; i < str.length ; i++){
if( str[i] === from ){
result += to;
}
else {
result += str[i];
}
}
return result;
}
입력받은 문자열 사이에 순차적으로 숫자 문자열을 추가
- 문자열을 입력받아 각 문자(letter) 뒤에 해당 문자의 인덱스가 추가된 문자열을 리턴
- 반복문(for)문을 사용
- 빈 문자열을 입력받은 경우, 빈 문자열을 리턴
function characterAndNumber(word) {
result = '';
count = 0;
for(let i = 0 ; i < word.length ; i++){
result += word[i] + count;
count++
}
return result;
}
밑의 거듭제곱 구하기
- 밑(base)과 지수(exponent)를 입력받아 밑의 거듭제곱을 리턴
- 반복문(for)문을 사용
- Math.pow, 거듭제곱 연산자 사용 금지
function computePower(base, exponent) {
result = 1;
for(let i = 1; i <= exponent ; i++){
result *= base;
}
return result;
}
입력받은 수의 약수 합 구하기
- 수를 입력받아 약수(factor)의 합을 리턴
- number 타입을 리턴
function getSumOfFactors(num) {
sum = 0;
for(let i = 1; i <= num ; i++){
if(num % i === 0){
sum += i;
}
}
return sum;
}
소수 여부
- 1 이상의 자연수를 입력받아 소수(prime number)인지 여부를 리턴
- boolean 타입을 리턴
function isPrime(num) {
if (num === 1){
return false;
}
if (num === 2){
return true;
}
if (num % 2 === 0){
return false;
}
for(let i = 3 ; i < num ; i += 2){
if(num % i === 0){
return false;
}
}
return true;
}
18. 나중에 함
str 문자열로 만들 수 있는 모든 문자열 구하기
- 문자열을 입력받아 해당 문자열에 등장하는 각 문자(letter)를 가지고 만들 수 있는 길이 2의 문자열들을 리턴
- string 타입을 리턴
- 이중 반복문(double for loop)을 사용
- 빈 문자열을 입력받은 경우에는 빈 문자열을 리턴
function makePermutations(str) {
result = '';
for (let i = 0 ; i < str.length ; i++){
for (let j = 0 ; j <str.length; j++){
result += str[i] + str[j] + ','
}
}
return result.slice(0, -1);
}
str에 중복된 문자 존재 여부
- 문자열을 입력받아 해당 문자열에 중복된 문자(letter)가 존재하는지 여부를 리턴
- boolean 타입을 리턴
- 이중 반복문(double for loop)을 사용
- 빈 문자열을 입력받은 경우에는 false을 리턴
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;
}
makeMarginalString
- 문자열을 입력받아 해당 문자열을 처음부터 한 글자(letter)씩 다시 작성하려고 합니다. 이 때, 한 글자를 추가할 때마다 부분적으로 완성된 문자열을 전부 이어붙인 문자열을 리턴
- string 타입을 리턴
- 이중 반복문(double for loop)을 사용
- str.slice, str.substr, str.substring 사용은 금지
- 빈 문자열을 입력받은 경우에는 빈 문자열을 리턴
function makeMarginalString(str) {
result = '';
for(let i = 0 ; i < str.length ; i++){
for(let j = 0 ; j <= i ; j++){
result += str[j];
}
}
return result;
}