JS 알고리즘 문제풀이/섹션 2. 1, 2차원 배열 탐색

2.보이는 학생

crab. 2022. 1. 12. 11:36

📌강의 정리

앞에 사람보다 크면 보이고, 작거나 같으면 안보인다.

배열만 솔루션으로 받으면 된다.

i를 정해서 i가 앞에보다 크면 count하면 되는데

이걸 이중포문 쓰면 시간 복잡도가 O(N^2)가 된다. 그러므로 포문 하나만 써야한다.

max값을 i일때 i앞에서의 제일 큰사람으로 정한다.

max값은 새롭게 보일때마다 카운팅해주면서 다시 정해주면 된다.

처음은 무조건 보이니까 카운트 1로 시작하고 max값은 arr[0]으로 시작한다.

반복문도 1부터 시작한다.

📌느낀점

나와 다른점은 처음에 카운팅을 하나해주고 max값을 arr[0]으로 시작한다는 점이다.

그래서 반복문이 1부터 시작하는데 아직은 나와 강사님 중 어떤게 더 효율적인지

시간복잡도를 잘 몰라서 모르겠다.

나중에 시간복잡도를 알아봐야 한다.

//나의 코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr){         
                let answer = 0, max = 0;
                for(x of arr){
                    if(x > max){
                        max = x;
                        answer++;
                    }
                }
                return answer;
            }

            let arr=[130, 135, 148, 140, 145, 150, 150, 153];
            console.log(solution(arr));
        </script>
    </body>
</html>
//강사님 코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <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>
    </body>
</html>

'JS 알고리즘 문제풀이 > 섹션 2. 1, 2차원 배열 탐색' 카테고리의 다른 글

6.격자판 최대합  (0) 2022.01.13
5.등수구하기  (0) 2022.01.12
4.점수계산  (0) 2022.01.12
3.가위바위보  (0) 2022.01.12
1.큰 수 출력하기  (0) 2022.01.12