CODE KATA #18

YoungToMaturity·2021년 2월 8일
0

CODE KATA 🧗‍♂️

목록 보기
18/37

큰 수 출력하기

N(1<=N<=100)개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요.(첫 번째 수는 무조건 출력한다)

나의 풀이

            function solution(arr){         
                let answer=[];
                answer.push(arr[0]);
                for (i=1; i<arr.length; i++) {
                    if(arr[i] > arr[i-1]) answer.push(arr[i]);
                }
                return answer;
            }
            let arr=[7, 3, 9, 5, 6, 12];
            console.log(solution(arr));

정답 풀이와 같다!


보이는 학생

선생님이 N(1<=N<=1000)명의 학생을 일렬로 세웠습니다. 일렬로 서 있는 학생의 키가 앞에 서부터 순서대로 주어질 때, 맨 앞에 서 있는 선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요. (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.)

나의 풀이

            function solution(arr){         
                let answer=1, max=arr[0];
                for(i=1; i<arr.length; i++) {
                    if(arr[i]>max) {
                        max = arr[i];
                        answer++;
                    }
                }
                return answer;
            }
            let arr=[130, 135, 148, 140, 145, 150, 150, 153];
            console.log(solution(arr));

정답 풀이와 같다!


가위바위보

A, B 두 사람이 가위바위보 게임을 합니다. 총 N번의 게임을 하여 A가 이기면 A를 출력하고, B가 이기면 B를 출력합니다. 비길 경우에는 D를 출력합니다.
가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정하겠습니다.

나의 풀이

            function solution(a, b){         
                let answer="";
                for (i=0; i<a.length; i++) {
                    if(a[i]===b[i]) console.log("D");
                    else {
                        if(a[i]===1 && b[i]===3) console.log("A");
                        else if(a[i]===2 && b[i]===1) console.log("A");
                        else if(a[i]===3 && b[i]===2) console.log("A");
                        else console.log("B");
                    }
                }
                return answer;
            }
            let a=[2, 3, 3, 1, 3];
            let b=[1, 1, 2, 2, 3];
            console.log(solution(a, b));

정답 풀이

            function solution(a, b){         
                let answer="";
                for(let i=0; i<a.length; i++){
                    if(a[i]===b[i]) answer+="D ";
                    else if(a[i]===1 && b[i]===3) answer+="A ";
                    else if(a[i]===2 && b[i]===1) answer+="A ";
                    else if(a[i]===3 && b[i]===2) answer+="A ";
                    else answer+="B ";
                }
                
                return answer;
            }

            let a=[2, 3, 3, 1, 3];
            let b=[1, 1, 2, 2, 3];
            console.log(solution(a, b));

점수계산

OX 문제는 맞거나 틀린 두 경우의 답을 가지는 문제를 말한다. 여러 개의 OX 문제로 만들어진 시험에서 연속적으로 답을 맞히는 경우에는 가산점을 주기 위해서 다음과 같이 점수 계산을 하기로 하였다. 1번 문제가 맞는 경우에는 1점으로 계산한다. 앞의 문제에 대해서는 답을 틀리다가 답이 맞는 처음 문제는 1점으로 계산한다. 또한, 연속으로 문제의 답이 맞는 경우에서 두 번째 문제는 2점, 세 번째 문제는 3점, ..., K번째 문제는 K점으로 계산한다. 틀린 문제는 0점으로 계산한다.

나의 풀이

            function solution(arr){         
                let answer=0, cnt=0;
                for (let x of arr) {
                    if(x===1) {
                        answer += (1+cnt);
                        cnt++;
                    } else {
                        cnt = 0;
                    }
                }
                return answer;
            }
            let arr=[1, 0, 1, 1, 1, 0, 0, 1, 1, 0];
            console.log(solution(arr));

정답 풀이

            function solution(arr){         
                let answer=0, cnt=0;
                for(let x of arr){
                    if(x===1){
                        cnt++;
                        answer+=cnt;
                    }
                    else cnt=0;
                }
                   
                return answer;
            }

            let arr=[1, 0, 1, 1, 1, 0, 0, 1, 1, 0];
            console.log(solution(arr));

등수 구하기

N(1<=N<=100)명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요.

나의 풀이

            function solution(arr){  
                let n=arr.length;
                let answer = [];
                for (let x of arr) {
                    let big = 1;
                    for(i=0; i<n; i++) {
                        if(x<arr[i]) big++;
                    }
                    answer.push(big);
                }
                return answer;
            }
            let arr=[87, 89, 92, 100, 76];
            console.log(solution(arr));

정답 풀이

            function solution(arr){  
                let n=arr.length;
                let answer=Array.from({length:n}, ()=>1);
                for(let i=0; i<n; i++){
                    for(let j=0; j<n; j++){
                        if(arr[j]>arr[i]) answer[i]++;
                    }
                }             
                return answer;
            }

            let arr=[87, 89, 92, 100, 76];
            console.log(solution(arr));

Array.from()

Array.from() 메서드는 유사 배열 객체(array-like object)나반복 가능한 객체(iterable object)를 얕게 복사해 새로운Array 객체를 만듭니다.

profile
iOS Developer

0개의 댓글