JavaScript 초급 스 크 립 트 알고리즘 프로 그래 밍 연습 (W3C 학원)

JavaScript 스 크 립 트 알고리즘 프로 그래 밍 실전 과정
목차
JavaScript 스 크 립 트 알고리즘 프로 그래 밍 실전 과정
1. 반전 문자열 알고리즘 도전
2. 계승 알고리즘 도전
3. 리 턴 알고리즘 도전
4. 가장 긴 단어 알고리즘 찾기 도전
5. 이니셜 대문자 알고리즘 설정 도전
6. 배열 의 최대 값 알고리즘 도전 찾기
7. 끝 문자 알고리즘 도전 확인
8. 반복 알고리즘 도전
9. 문자열 캡 처 알고리즘 도전
10. 배열 분할 알고리즘 도전
11. 배열 절단 알고리즘 도전
12. 배열 조회 알고리즘 도전
13. 배열 의 특정 값 알고리즘 도전 삭제
14. 배열 의 임의의 여러 값 알고리즘 도전 제거
15. 배열 정렬 및 삽입 값 알고리즘 도전
16. 변위 암호 알고리즘 도전
1. 반전 문자열 알고리즘 도전
실전 반전 문자열 알고리즘 은 문자열 을 배열 로 바 꾼 다음 배열 의 reverse 방법 으로 배열 순 서 를 뒤 집 은 다음 배열 을 문자열 로 바 꿀 수 있 습 니 다.
function reverseString(str) {
    var strArry = str.split("");
    strArry.reverse();
    str = strArry.join("");
return str;
}

reverseString("hello");

실행 결과: olleh
2. 계승 알고리즘 도전
만약 자모 n 을 사용 하여 하나의 정 수 를 대표 한다 면, 단 계 는 n 보다 작 거나 같은 정수 의 곱 이다.
곱 하기 단 계 는 보통 n 으로 간략하게 쓴다!
예: 5! =1 * 2 * 3 * 4 * 5 = 120
function factorialize(num) {
    var result = 1;
    for (var i = 1; i <= num; i++) {
        result *= i;
    }
return result;
}

factorialize(5);
function factorialize(num) {
    if (num == 1 || num === 0) {
        return 1
    } else {
        return num * factorialize(num - 1);
    }
return result;
}

factorialize(5);

실행 결과: 120
첫 번 째 는 For 순환 구 조 를 사용 하고 두 번 째 는 재 귀 알고리즘 을 사용 합 니 다. 재 귀 알고리즘 을 많이 사용 하여 for / do... while 순환 구 조 를 대체 하 는 것 을 권장 합 니 다.
3. 리 턴 알고리즘 도전
주어진 문자열 이 답장 이 라면 true 를 되 돌려 주 고, 반대로 false 를 되 돌려 줍 니 다.
palindrome (답장) 은 문장 부호, 대소 문자, 빈 칸 을 무시 하고 읽 는 문자열 을 말 합 니 다.
메모: 문자열 의 불필요 한 구두점 기호 와 빈 칸 을 삭제 한 다음 문자열 을 소문 자로 바 꾸 어 답장 인지 확인 해 야 합 니 다.
function palindrome(str) {
// Good luck!
var regExp = /[\s|\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\|\/|\?]/g;
str = str.replace(regExp,"").toLowerCase();
var strArray = str.split("");
var _length = strArray.length;
for (var i = 0; i < _length / 2; i++) {
    if (strArray[i] !== strArray[_length - 1 - i]) {
        return false;
    }
}
return true;
}

palindrome("eye");

실행 결과: true 
이 문 제 는 또 다른 해법 이 있 습 니 다. String 의 split () 방법 으로 문자열 을 숫자 로 바 꾸 는 것 입 니 다.그 다음 에 배열 의 array Object. reverse () 방법 을 활용 하여 원 배열 요 소 를 순 서 를 바 꿉 니 다.마지막 으로 배열 의 join () 방법 을 활용 하여 배열 을 문자열 로 바 꾸 어 두 문자열 이 같은 지 판단 합 니 다.
4. 가장 긴 단어 알고리즘 찾기 도전
제 공 된 문장의 가장 긴 단어의 길 이 를 되 돌려 줍 니 다.반환 값 은 숫자 일 것 입 니 다.
function findLongestWord(str) {
    var strArr = str.split(" ");
    str = "";
    for (var i = 0; i < strArr.length; i++) {
        if (strArr[i].length > str.length) {
            str = strArr[i];
        }
    }
return str.length;
}

findLongestWord("The quick brown fox jumped over the lazy dog");

실행 결과: 6
5. 이니셜 대문자 알고리즘 설정 도전
문자열 의 모든 단어 이니셜 을 대문자 로 쓰 고 나머지 부분 은 소문 자로 되 돌려 줍 니 다.
'the' 와 'of' 같은 연결 부 는 같다.
운영 결과: I 'm A Little Tea Pot
6. 배열 의 최대 값 알고리즘 도전 찾기
오른쪽 에 있 는 큰 배열 에는 네 개의 작은 배열 이 포함 되 어 있 습 니 다. 각각 작은 배열 의 최대 치 를 찾 은 다음 에 연결 하여 새로운 배열 을 만 드 십시오.
알림: for 순환 으로 배열 을 교체 하고 arr [i] 방식 으로 배열 의 모든 요 소 를 방문 할 수 있 습 니 다.
function titleCase(str) {
    var strArr = str.split(" ");
    for (var i = 0; i < strArr.length; i++) {
        strArr[i] = strArr[i].substring(0,1).toUpperCase() +  strArr[i].substring(1).toLowerCase();
    }
    str = strArr.join(" ");
return str;
}

titleCase("I'm a little tea pot");

운행 결과: [5, 27, 39, 1001]
7. 끝 문자 알고리즘 도전 확인
문자열 (str) 이 지정 한 문자열 (target) 로 끝 나 는 지 확인 합 니 다.그렇다면 트 루 로 돌아 가기;그렇지 않 으 면 false 로 돌아 갑 니 다.
이 도전 은 ES 2015 에 도 입 된 ends With () 방법 으로 해결 할 수 있다.그러나 이 도전 의 목적 으로 자바 스 크 립 트 하위 문자열 방법 중 하 나 를 사용 하 시 기 를 바 랍 니 다.
function largestOfFour(arr) {
// You can do this!
var newArr = [];
for (var i = 0; i < arr.length; i++) {
    var temp = 0;
    for (var j = 0; j < arr[i].length; j++) {
        if (arr[i][j] > temp) {
            temp = arr[i][j];
        }
    }
    newArr.push(temp);
}
return newArr;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

실행 결과: true
8. 반복 알고리즘 도전
지정 한 문자열 num 회 를 반복 해서 연결 합 니 다. num 이 음수 라면 빈 문자열 을 되 돌려 줍 니 다.
function confirmEnding(str, target) {
// "Never give up and good luck will find you."
// -- Falcor
str = str.substring(str.length - target.length);
var flag = false
if (str === target) {
    flag = true;
}
return flag;
}

confirmEnding("Bastian", "n");

실행 결과: abcabcabc
9. 문자열 캡 처 알고리즘 도전
문자열 의 길이 가 주어진 인자 num 보다 길 면 나머지 부분 을... 로 표시 합 니 다.문자열 끝 에 삽 입 된 세 개의 점 번호 도 문자열 의 길 이 를 계산 한 다 는 것 을 명심 하 세 요.
그러나 지정 한 인자 num 이 3 보다 작 거나 같 으 면 추 가 된 세 개의 점 호 는 문자열 의 길 이 를 계산 하지 않 습 니 다.
실행 결과: A - tisket...
10. 배열 분할 알고리즘 도전
하나의 함 수 를 만 들 고 하나의 배열 arr 를 지정 한 배열 크기 size 에 따라 여러 개의 배열 블록 으로 나 눕 니 다.
예 를 들 어 chunk ([1, 2, 3, 4], 2) = [1, 2], [3, 4];
chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];
function repeat(str, num) {
// repeat after me
var newStr = "";
for (var i = 0; i < num; i++) {
    newStr += str;
}
return newStr;
}

repeat("abc", 3);

운행 결과: [[0, 1, 2, 3], [4, 5]]
11. 배열 절단 알고리즘 도전
n 개의 요 소 를 차단 한 후 남 은 요 소 를 되 돌려 주 고 색인 0 부터 차단 합 니 다.
function truncate(str, num) {
// Clear out that junk in your trunk
if(num <= 3){
    str = str.substring(0,num) + "...";
}else{
    if (str.length > num) {
        str = str.substring(0,num - 3) + "...";
    }else if(str.length <= num){
        str = str;
    }
}
return str;
}

truncate("A-tisket a-tasket A green and yellow basket", 11);
function chunk(arr, size) {
// Break it up.
var _length = arr.length % size === 0 ? arr.length / size : Math.floor(arr.length / size) + 1;
var newArr = [];
for (var i = 0; i < _length -1; i++) {
    newArr[i] = [];
    for (var j = 0; j < size; j++) {
        newArr[i].push(arr[j + i * size]);
    }
}
var newSize = size;
if (arr.length % size !== 0) {
   newSize = arr.length % size;
}
newArr[_length -1] = [];
for (var k = 0; k < newSize; k++) {
    newArr[_length -1].push(arr[k + (_length -1) * size]);
}
return newArr;
}

chunk([0, 1, 2, 3, 4, 5], 4);

실행 결과: [3]
두 번 째 방법 을 직접 사용 하 는 것 을 추천 합 니 다.
12. 배열 조회 알고리즘 도전
 배열 의 첫 번 째 문자열 요소 가 두 번 째 문자열 요소 의 모든 문 자 를 포함 하고 있다 면 함수 가 true 로 돌아 갑 니 다.예 를 들 어 ["hello", "Hello"] 는 대소 문 자 를 무시 한 상태 에서 두 번 째 문자열 의 모든 문 자 를 첫 번 째 문자열 에서 찾 을 수 있 기 때문에 true 로 돌아 가 야 합 니 다.["hello", "hey"] false 로 돌아 가 야 합 니 다. 문자열 "hello" 는 문자 "y" 를 포함 하지 않 기 때 문 입 니 다.
["Alien", "line"] 트 루 로 돌아 가 야 합 니 다. "line" 에서 모든 문 자 를 "Alien" 에서 찾 을 수 있 기 때 문 입 니 다.
function slasher(arr, howMany) {
    // it doesn't always pay to be first
    for (var i = 0; i < howMany; i++) {
        arr.shift();
    }
    return arr;
}

slasher([1, 2, 3], 2);

실행 결과: false
13. 배열 의 특정 값 알고리즘 도전 삭제
배열 의 모든 가짜 값 을 삭제 합 니 다.
JavaScript 에서 가짜 값 은 false, null, 0, ", undefined 와 NaN 이 있 습 니 다.
function slasher(arr, howMany) {
    // it doesn't always pay to be first
    arr.splice(0,howMany);
    return arr;
}

slasher([1, 2, 3], 2);
function mutation(arr) {
    var flag = true;
    for (var i = 0; i < arr[1].length; i++) {
        if(arr[0].toLowerCase().indexOf(arr[1][i].toLowerCase()) === -1){
            flag = false;
            break;
        }
    }
    return flag;
}

mutation(["hello", "hey"]);

실행 결과: [7, "ate", 9]
첫 번 째 방법 은 자 바스 크 립 트 의 익명 방법 을 사용 하고, 두 번 째 방법 은 람 다 표현 식 을 사용한다.
14. 배열 의 임의의 여러 값 알고리즘 도전 제거
하나의 destroyer 함 수 를 실현 합 니 다. 첫 번 째 매개 변 수 는 초기 배열 이 고 한 개 이상 의 매개 변수 입 니 다.초기 배열 에서 이 매개 변수 와 같은 값 을 가 진 모든 요 소 를 삭제 합 니 다.
function bouncer(arr) {
// Don't show a false ID to this bouncer.
return arr.filter(function doFilter(ele){
    if (ele === null || ele === undefined || !ele || ele === 0 || ele === "") {
        return false;
    }
    return true;
});
}

bouncer([7, "ate", "", false, 9]);

운영 결과: [1, 1]
첫 번 째 방법 은 자 바스 크 립 트 의 익명 방법 을 사용 하고, 두 번 째 방법 은 람 다 표현 식 을 사용한다.
15. 배열 정렬 및 삽입 값 알고리즘 도전
먼저 배열 에 정렬 을 한 다음 에 지정 한 값 이 배열 의 위치 에 있 는 것 을 찾 고 마지막 으로 위치 에 대응 하 는 색인 을 되 돌려 줍 니 다.예 를 들 어 where ([1, 2, 3, 4], 1.5) 는 1 을 되 돌려 야 한다.1.5 가 배열 [1, 2, 3, 4] 에 삽입 되면 [1, 1.5, 2, 3, 4] 가 되 고 1.5 에 대응 하 는 색인 값 은 1 이기 때문이다.마찬가지 로 where ([20, 3, 5], 19) 는 2 로 돌아 가 야 한다.배열 은 먼저 [3, 5, 20] 으로 정렬 되 고 19 는 배열 [3, 5, 20] 에 삽입 한 후에 [3, 5, 19, 20] 이 되 며 19 에 대응 하 는 색인 값 은 2 이기 때문이다.
function bouncer(arr) {
// Don't show a false ID to this bouncer.
//      Lambda   
return arr.filter(ele => ele !== null && ele !== undefined && ele  && ele !== 0 && ele !== "");
}

bouncer([7, "ate", "", false, 9]);

실행 결과: 1
16. 변위 암호 알고리즘 도전
유명한 카 이 저 비밀번호 Caesar cipher 를 소개 하 겠 습 니 다.자리 옮 김 비밀번호, 즉 비밀번호 의 알파벳 은 지 정 된 수량 에 따라 자 리 를 옮 깁 니 다.흔히 볼 수 있 는 사례 는 ROT 13 비밀번호 로 알파벳 이 13 개의 위 치 를 옮긴다 는 것 이다.에서↔ 'N', 'B' ↔'O ', 이런 식 으로 유추 하 다.ROT 13 함 수 를 써 서 암호 화 문자열 을 입력 하고 복호화 문자열 을 출력 합 니 다.모든 자 모 는 대문자 이 므 로 알파벳 이 아 닌 문자 (예 를 들 어 빈 칸, 구두점 기호) 로 바 꾸 지 말고 이 특수 문 자 를 만나면 건 너 뜁 니 다.
실행 결과: FREE CODE CAMP

좋은 웹페이지 즐겨찾기