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

[알고리즘] 1. 자릿수의합 / 2. 뒤집은소수 / 3. 멘토링 / 4. 졸업선물 / 5. k번째수

by dreamer10457 2024. 1. 28.
반응형

1. 자릿수의합 

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

        let max = Number.MIN_SAFE_INTEGER;

        for (let i = 0; i < arr.length; i++) {
          const origin = arr[i];

          const sum = String(arr[i])
            .split('')
            .reduce((acc, cur) => acc + Number(cur), 0);

          if (max < sum) {
            max = sum;
            answer = origin;
          } else if (max === sum) {
            if (answer < origin) {
              answer = origin;
            }
          }
        }

        return answer;
      }

      let arr = [51, 27];
      console.log(solution(7, arr));
    </script>
  </body>
</html>

 

2. 뒤집은소수 

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function isPrime(num) {
        if (num === 1) {
          return false;
        }

        for (let i = 2; i < num; i++) {
          if (num % i === 0) {
            return false;
          }
        }

        return true;
      }

      function solution(arr) {
        let answer = [];

        for (let num of arr) {
          const origin = num;
          const reverted = Number(String(num).split('').reverse().join(''));

          console.log(reverted);
          if (isPrime(reverted)) {
            answer.push(reverted);
          }
        }

        return answer;
      }

      let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
      console.log(solution(arr));
    </script>
  </body>
</html>

 

3. 멘토링 

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

        let personCount = test[0].length;

        for (let i = 1; i <= personCount; i++) {
          for (let j = 1; j <= personCount; j++) {
            if (i !== j) {
              const mentor = i;
              const mentee = j;

              let isPossible = true;
              for (let k = 0; k < test.length; k++) {
                const mentorIndex = test[k].indexOf(i);
                const menteeIndex = test[k].indexOf(j);

                if (mentorIndex > menteeIndex) {
                  isPossible = false;
                  break;
                }
              }
              if (isPossible) {
                console.log(mentor, mentee);
                answer++;
              }
            }
          }
        }

        return answer;
      }

      let arr = [
        [3, 4, 1, 2],
        [4, 3, 2, 1],
        [3, 1, 4, 2],
      ];
      console.log(solution(arr));
    </script>
  </body>
</html>

 

4. 졸업선물 

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(m, product) {
        let answer = 0;
        let n = product.length;

        const sorted = product.sort((a, b) => a[0] + a[1] - (b[0] + b[1]));

        for (let i = 0; i < sorted.length; i++) {
          let count = 1;
          let sum = m - (sorted[i][0] / 2 + sorted[i][1]);

          for (let j = 0; j < sorted.length; j++) {
            if (i !== j) {
              if (sorted[j][0] + sorted[j][1] > m) {
                break;
              } else {
                m -= sorted[j][0] + sorted[j][1];
                count++;
              }
            }

            // if (sum >= m) break;
            // if (i !== j) {
            //   sum += sorted[j][0] + sorted[j][1];
            //   if (sum <= m) {
            //     count++;
            //   } else {
            //     break;
            //   }
            // }
          }

          answer = Math.max(count, answer);
        }

        return answer;
      }

      let arr = [
        [6, 6],
        [2, 2],
        [4, 3],
        [4, 5],
        [10, 3],
      ];
      console.log(solution(28, arr));
    </script>
  </body>
</html>

<!-- <html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(m, product) {
        let answer = 0;
        let n = product.length;

        product.sort((a, b) => a[0] + a[1] - (b[0] + b[1]));

        for (let i = 0; i < n; i++) {
          let money = m - (product[i][0] / 2 + product[i][1]);
          let cnt = 1;
          for (let j = 0; j < n; j++) {
            if (j !== i && product[j][0] + product[j][1] > money) break;
            if (j !== i && product[j][0] + product[j][1] <= money) {
              money -= product[j][0] + product[j][1];
              cnt++;
            }
          }
          answer = Math.max(answer, cnt);
        }
        return answer;
      }

      let arr = [
        [6, 6],
        [2, 2],
        [4, 3],
        [4, 5],
        [10, 3],
      ];
      console.log(solution(28, arr));
    </script>
  </body>
</html> -->

 

5. k번째수 

 

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(n, k, card) {
        let answer;

        let sum = new Set();

        for (let i = 0; i < n - 2; i++) {
          for (let j = i + 1; j < n - 1; j++) {
            for (let k = j + 1; k < n; k++) {
              const result = card[i] + card[j] + card[k];

              sum.add(result);
            }
          }
        }

        sum = Array.from(sum).sort((a, b) => b - a);

        answer = sum[k - 1];

        return answer;
      }

      let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
      console.log(solution(10, 3, arr));
    </script>
  </body>
</html>
반응형