나의 풀이

  function solution(arr) {
            let rowSum = 0;
            let columnSum = 0;
            let crossSum = 0;

            // for (let i = 0; i < arr.length; i++) {
            //     for (let j = 0; j < arr.length; j++) {
            //         if (arr[i][j]) {

            //         }
            //     }

            // }

            // return answer;
            for (let i = 0; i < arr.length; i++) {
                rowSum += arr[i][0];
                console.log('rowSum=?' + rowSum)
                // console.log(rowSum)
            }
            for (let i = 0; i < arr.length; i++) {
                columnSum = columnSum + arr[0][i];
            }
            for (let i = 0; i < arr.length; i++) {
                crossSum = arr[i][i];
            }
        }

        let arr = [[10, 13, 10, 12, 15],
        [12, 39, 30, 23, 11],
        [11, 25, 50, 53, 15],
        [19, 27, 29, 37, 27],
        [19, 13, 30, 13, 19]];
        // console.log(arr[0][0])
        // console.log(arr[1][0])

        // 행

        // 열

        // 대각선

        
        // 열

        console.log(columnSum)
        console.log(crossSum)
        // console.log('arr=' + arr.length);
        // 행

        // 대각선
        // arr[0][0] / arr[1][1] / arr[2][2]

        // console.log(solution(arr));
    </script>

모범 정답

<script>
            function solution(arr){  
                let answer=Number.MIN_SAFE_INTEGER;
                let n=arr.length;
                let sum1=sum2=0;
                for(let i=0; i<n; i++){
                    sum1=sum2=0;
                    for(let j=0; j<n; j++){
                        sum1+=arr[i][j];
                        sum2+=arr[j][i];
                    }
                    answer=Math.max(answer, sum1, sum2);
                }
                sum1=sum2=0;
                for(let i=0; i<n; i++){
                    sum1+=arr[i][i];
                    sum2+=arr[i][n-i-1];
                }  
                answer=Math.max(answer, sum1, sum2); 
                return answer;
            }

            let arr=[[10, 13, 10, 12, 15], 
                     [12, 39, 30, 23, 11],
                     [11, 25, 50, 53, 15],
                     [19, 27, 29, 37, 27],
                     [19, 13, 30, 13, 19]];
            console.log(solution(arr));
</script>

 

'코딩테스트 > JavaScript' 카테고리의 다른 글

[코딩테스트] 숫자만 추출  (1) 2023.12.23
[코딩테스트] 봉우리  (4) 2023.12.22
[코딩테스트] 등수구하기  (0) 2023.12.20
[코딩테스트] 점수 계산  (0) 2023.12.19
[코딩테스트] 가위 바위 보  (2) 2023.12.19

나의 풀이

function solution(arr) {
            let answer = [];
            let cnt = 0;
  
    for (let i = 0; i < arr.length; i++) {
                for (let j = 0; j < arr.length; j++) {
                    if (arr[j] > arr[i]) {
                        answer.push(cnt++)
                    }


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

 

문제 정답

 <script>
            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));
 </script>

 

해결 포인트1)
우선 정답 풀이처럼 처음 배열에 [1,1,1,1,1] 이렇게 초기화하기위해서 arr의 길이만큼 그리고 () =>1 을통해 1로 초기화 해주는것이 포인트


'코딩테스트 > JavaScript' 카테고리의 다른 글

[코딩테스트] 봉우리  (4) 2023.12.22
[코딩테스트] 격자판 최대합  (2) 2023.12.22
[코딩테스트] 점수 계산  (0) 2023.12.19
[코딩테스트] 가위 바위 보  (2) 2023.12.19
[코딩테스트] 보이는 학생  (0) 2023.12.18

나의 풀이




방법1)

function solution(arr) {
            let num = 0;
            for (let i = 0; i < arr.length; i++) {
                if (arr[i] == arr[i + 1]) {
                    num = num + i
                } else if (arr[i] == 0) {
                    num = num + 0;
                } else {
                    
                }
                console.log(num)
            }
            return num;
        }

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

 

방법2)

 function solution(arr) {
            let num = 0;
            for (let i = 0; i < arr.length; i++) {
                if (arr[i] != 0) {
                    num = num + i
                } else if (arr[i] == 0) {
                    num = num + 0;
                } else {

                }
                // console.log(num)
            }
            return num;
        }

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

해설지 정답

 <script>
            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));
        </script>

해설은 위처럼 풀었다. 나는 좀 더 어렵게 푼것같기도하고 그냥 x를 1로 놓고풀면 되는게 핵심인것같다.

나의 풀이 

        function solution(a, b) {
            let answer = "";
            for (let i = 0; i < a.length; i++) {
                // 0- 1 2 3 4 5 67 8 9
                // 1-0 1 2 3 4 5 6 7 8 9
                // 1vs2 = 2
                // 1vs3 =1 
                // 2vs 1
                // 2vs3 
                // 

                // for (let j = 0; j < b.length; j++) {
                //     if (a[i] > b[j]) {
                switch (a, b) {
                    case a[i] > b[i]:
                        return;
                    case a
                }

                //     }

                // }


            }

            return answer;
        }

위는 나의 풀이다. 우선 컨디션이 안좋을때 풀어서 그런지 모르겠는데 잘 안풀렸고 

기준점을 잘 잡아야된다는것을 몰랐다. 그래서 결국 도중에 멘붕와서 답은 제출하지 못했었다ㅠ

하지만 아직 알고리즘 초보니까 좀 더 배우면 할 수 있을거라고 생각하고 배워나가야겠다.

문제 정답

 <script>
            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));
        </script>

 

풀이법: 우선 a를 기준으로 값이나오는경우를 생각하고 a,b가 같은경우, 나머지 경우 이렇게 3가지로 나누면

간단히 식을 위처럼 작성할수있다.

어렵게 생각하지말고 한가지 기준, 즉, 기준을 잘 잡고 풀면 될것같다.

나의 풀이

<script>
function solution(arr) {
            let num = [];
            max = Number.MIN_SAFE_INTEGER;
            console.log(max)
            for (let i = 0; i < arr.length; i++) {
                if (arr[i] > max) {
                    max = arr[i]
                    console.log('max=' + max)
                    num.push(max)
                }
                // for (let i = 0; i < s.length; i++) {
                //console.log(s[i], i, s.indexOf(s[i]));
                // if (num.indexOf(num[i]) === i)
                //     num += arr[i];

                // console.log(num)
            }

            return num.length;

        }

        let arr = [130, 135, 148, 140, 145, 150, 150, 153];
        console.log(solution(arr));
    </script>

 

해설의 정답

<script>
            function solution(arr){         
                let answer=1, max=arr[0];
                for(let i=1; i<arr.length; i++){
                    if(arr[i]>max){
                        answer++;
                        max=arr[i];
                    }
                }
                return answer;
            }

            let arr=[130, 135, 148, 140, 145, 150, 150, 153];
            console.log(solution(arr));
</script>

나의 풀이와 다른점은 해설에서는 answer를 1로 받고, max 를 arr[0]로 잡았다는것

 

나의 풀이

 function solution(s) {
            let answer = "";
            for (let x of s) {
                if (x === s.toLowerCase() && s.length % 2 == 1) {

                    s = s[(s.length) / 2 + 1]
                    console.log
                }
                // } else {
                //     answer = answer[(s.length) / 2 - 1] + answer[(s.length) / 2]
                // }
                if (x === s.toLowerCase() && s.length % 2 == 0) {
                    s = s[(s.length) / 2 - 1] + s[(s.length) / 2]
                }
            }
            return answer;
        }
        console.log(solution("study"));
    </script>

정답 

 <script>
            function solution(s){  
                let answer;
                let mid=Math.floor(s.length/2)
                if(s.length%2===1) answer=s.substring(mid, mid+1);
                else answer=s.substring(mid-1, mid+1);
                //if(s.length%2===1) answer=s.substr(mid, 1);
                //else answer=s.substr(mid-1, 2);
                return answer;
            }
            console.log(solution("study"));
        </script>

 

'코딩테스트 > JavaScript' 카테고리의 다른 글

[코딩테스트] 가위 바위 보  (2) 2023.12.19
[코딩테스트] 보이는 학생  (0) 2023.12.18
[코딩테스트] 가장 긴 문자열  (0) 2023.12.16
[코딩테스트] 문자찾기  (0) 2023.12.15
[코테연습]  (0) 2023.12.13

나의정답

우선 밑은 나의 정답인데
여기서 for문을 for(let x of s ) 이런식으로 풀어도 정답이 나오는데 나는 밑에처럼 풀었다.

<script>
  function solution(s) {
            let answer = "", max = Number.MIN_SAFE_INTEGER;

            for (let i = 0; i < str.length; i++) {
                if (s[i].length > max) {
                    max = s[i].length; // 
                    // answer = max;
                    answer = s[i];
                    // console.log(str.length)
                }
            }

            return answer;
        }
        let str = ["teacher", "time", "student", "beautiful", "good"];
        console.log(solution(str));
        // console.log(str[1])
</script>

 

오류원인

하지만, 처음에는 오류가 났는데 그 원인은

1. answer = s[i] 에서 s[i]를 max로해서 오류났고

2. max = s[i].length 에서 length 부분을 s[i]로 했었기 때문에 오류가 났었다

이 2개를 수정해서 결국 정상출력

나의 해결방법

  <script>
        // function solution(s, t) {
        //     let sum = 0;
        //     for (let i = 0; i < str.length; i++) {
        //         if (s[i].includes(t)) {
        //             sum++
        //         }
        //     }

        //     return sum;
        // }

        // let str = "COMPUTERPROGRAMMING";
        // // console.log(str.length);
        // console.log(solution(str, 'R'));
</script>

내 풀이인데 

내 실수는 처음에 for문을 안적고 if만 해서 문자열길이(19)만큼 19가 답으로 출력됬다는것 

따라서 for문안에 if를 넣어야 원하는값을 잘 찾을수있다.

 

 

해결방법2) 

split('문자열') 로 특정 문자열 기준으로 나누기

 

해결방법3)

for x of s 로 for of 구문으로 해결하기

 

+ Recent posts