본문 바로가기
CS (컴퓨터 사이언스)/Algorithm (알고리즘)

[알고리즘] 1. 큰수출력하기 / 2. 보이는 학생 / 3. 가위바위보 / 5. 등수구하기 / 6. 격자최대합 / 7. 봉우리

by dreamer10457 2024. 1. 28.
반응형

1. 큰수출력하기 

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(arr) {
        let answer = [];
        answer.push(arr[0]);

        for (let 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));
    </script>
  </body>
</html>

 

2. 보이는 학생 

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(arr) {
        let answer = 1;
        let maxheight = arr[0];

        for (let h of arr) {
          if (h > maxheight) {
            maxheight = h;
            answer++;
          }
        }
        return answer;
      }

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

 

3. 가위바위보

 

5. 등수구하기

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(arr) {
        let answer = [];

        for (let i = 0; i < arr.length; i++) {
          let rank = 1;

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

        return answer;
      }

      let arr = [87, 89, 92, 100, 76];
      console.log(solution(arr));
    </script>
  </body>
</html>

 

6. 격자최대합

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(arr) {
        let answer = 0;
        let sum = 0;
        let sum2 = 0;

        for (let i = 0; i < arr.length; i++) {
          sum = 0;
          sum2 = 0;
          for (let j = 0; j < arr.length; j++) {
            sum += arr[i][j];
            sum2 += arr[j][i];
          }
          answer = Math.max(answer, sum, sum2);
        }

        sum = 0;
        sum2 = 0;
        for (let i = 0; i < arr.length; i++) {
          sum += arr[i][i];
          sum2 += arr[arr.length - 1 - i][i];
        }

        answer = Math.max(answer, sum, sum2);

        return answer;
      }
      [0, 0][(1, 1)][(2, 2)];

      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>
  </body>
</html>

 

7. 봉우리

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(arr) {
        let answer = 0;
        const n = arr.length;
        const dx = [-1, 0, 1, 0];
        const dy = [0, 1, 0, -1];

        for (let i = 0; i < n; i++) {
          for (let j = 0; j < n; j++) {
            let cnt = 4;
            // const 기준 = i >= 0 && j >= 0 && i < n && j < n && arr[i][j];
            // const up =
            //   i >= 0 && j + 1 >= 0 && i < n && j + 1 < n && arr[i][j + 1];
            // const down =
            //   i >= 0 && j - 1 >= 0 && i < n && j - 1 < n && arr[i][j - 1];
            // const left =
            //   i - 1 >= 0 && j >= 0 && i - 1 < n && j < n && arr[i - 1][j];
            // const right =
            //   i + 1 >= 0 && j >= 0 && i + 1 < n && j < n && arr[i + 1][j];
            for (let k = 0; k < 4; k++) {
              //x좌표,y좌표
              let nx = i + dx[k];
              let ny = j + dy[k];

              if (
                nx >= 0 &&
                ny >= 0 &&
                nx < n &&
                ny < n &&
                arr[i][j] <= arr[nx][ny]
              ) {
                cnt--;
                break;
              }
            }

            // if (기준 > up || !up) cnt++;
            // if (기준 > down || !down) cnt++;
            // if (기준 > left || !left) cnt++;
            // if (기준 > right || !right) cnt++;
            if (cnt === 4) answer++;
          }
        }

        return answer;
      }

      let arr = [
        [5, 3, 7, 2, 3],
        [3, 7, 1, 6, 1],
        [7, 2, 5, 3, 4],
        [4, 3, 6, 4, 1],
        [8, 7, 3, 5, 2],
      ];
      console.log(solution(arr));
    </script>
  </body>
</html>
반응형