Javascript Test05

01. 결괏값을 작성하시오.

{
    const arr = [1,1,3,3,0,0,1,1];

    function solution(arr) {
        return arr.filter((item, idx) => item !== arr[idx+1]);       // item 순서와 arr+1에서의 순서를 서로 나열했을 때 중복되는 값을 제거!
    }                                                              
    
    console.log(solution(arr))      // 1,3,0,1
}

02. 결괏값을 작성하시오.

{
    const arr = "webstoryboy";
        
    function solution(s) {
        const answer = '';
        return s.length % 2 == 1 ? s[s.length/2 | 0] : s.slice(s.length/2 - 1, s.length/2 + 1);    
        // 삼항 연산자 문제로 문자열에서 가운데 값을 찾는 알고리즘!
        // 문자열의 length값은 자릿수로 계산. 즉 s.length의 갯수는 11개이므로 11%2==1 이면 11 / 2 | 0(|은 또는 이라는 의미지만 배열에서 사용할 경우 두 수의 합을 구한다. 또한 값을 정수로 인식하기 때문에 5가 나오게 된다.)
        //즉 5 | 5 번째 자리의 문자열을 출력
    }
    
    console.log(solution(arr));    // o
}

03. 결괏값을 작성하시오.

{
    const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

    function solution(numbers){
        var answer = 0;
        for(let i =0; i<numbers.length; i++){
            answer = answer + numbers[i]
        }
        answer = answer/numbers.length;
        return answer;
    }

    console.log(solution(arr));
    //평균을 구하는 문제로 for문을 통해 배열의 총합을 구하여 answer에 대입한 뒤 그 값을 배열의 자릿수로 나누는 식 입니다... 실수로 틀려버렸네요 ㅠㅠ
    // 5.5  
}

06. 결괏값을 작성하시오.

{
    const num = "webstoryboy";

    function solution(s) {
        let answer;
        let arr = [...s]        //펼침연산자로 새로운 배열을 만듭니다. [w,e,b,s,t,o,r,y,b,o,y]
        if(arr.length % 2 == 0) {
            answer = arr.splice(arr.length/2-1, 2);
        } else {
            answer = arr.splice(Math.floor(arr.length/2), 1); //answer에 splice로 삭제한 값을 저장한다. 
        }
        return answer.join(""); // 리턴값출력 "o"
        //주의할 점.. 배열이기 때문에 0부터 시작하므로 5번째 자리는 t가 아닌 o이다...ㅜㅜ
    }

    console.log(solution(num)); //매개변수
}

08. 결괏값을 작성하시오.

{
    const num = [5, 9 ,7, 10];

    function solution(arr) {
        let sm = arr[0], index = 0;

        for(i=0; i<arr.length; i++){
            if(arr[i] < sm) {
                sm = arr[i]; // if문에서 false가 나오므로 if문 식은 무시한다! 즉 index값은 그대로 0!
                index = i;
            }
        }
        arr.splice(index, 1); //splice(0, 1)이므로 0번째에서 1번째 자리를 제거. 이때 06번 문제와 달리 새로운 변수에 삭제한 값을 저장하지 않았으므로 리턴값은 해당 값을 제와한 나머지가 출력된다....ㅜㅜ
        return arr; // [9,7,0]
    }
    console.log(solution(num))
}