ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 온보딩 커리큘럼(알고리즘풀기 기초)
    항해99(온보딩커리큘럼) 2023. 3. 12. 02:30

    오늘은 팀원들과 알고리즘 기초 풀기를 들어갔다.

    짝수의 합

    문제 설명

    정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

    제한사항

    0 < n ≤ 1000

    입출력 예

    n result
    10 30
    4 6

    입출력 예 설명

    입출력 예 #1

    • n이 10이므로 2 + 4 + 6 + 8 + 10 = 30을 return 합니다.

    입출력 예 #2

    • n이 4이므로 2 + 4 = 6을 return 합니다.
    function solution(numbers) {
      return numbers.reduce((a, b) => a + b) / numbers.length
    }
    
    console.log(solution([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))

    처음엔 reduce를 사용해서 풀이를 했지만 for문을 좀 더 익숙해보자 두가지로 만들었다.

    function solution(numbers) {
      let sum = 0
      for (i = 0; i < numbers.length; i++) {
        sum += numbers[1]
      }
      return sum / numbers.length
    }
    
    console.log(solution([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))

     

     


    양꼬치

    문제 설명

    머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.

    제한사항

    • 0 < n < 1,000
    • n / 10 ≤ k < 1,000
    • 서비스로 받은 음료수는 모두 마십니다.

    입출력 예

    n k result
    10 3 124,000
    64 6 768,000

     

    입출력 예 설명

    입출력 예 #1

    • 10인분을 시켜 서비스로 음료수를 하나 받아 총 10 * 12000 + 3 * 2000 - 1 * 2000 = 124,000원입니다.

    입출력 예 #2

    • 64인분을 시켜 서비스로 음료수를 6개 받아 총 64 * 12000 + 6 * 2000 - 6 * 2000 =768,000원입니다.
    function solution(n, k) {
      const ahng = n * 12000
      const subis = Math.floor(n / 10)
      const coca = (k - subis) * 2000
      return ahng + coca
    }
    
    console.log(solution(10, 3))

    위에 풀이는 이전에 이미 저렇게 해서 통과한 문제이긴 한데 이번엔 다른 방식으로 풀어봤다.

    function solution(n, k) {
      return 12000 * n + (k - Math.floor(n / 10)) * 2000
    }
    
    console.log(solution(10, 3))

     

    • 문제 설명
    • 삼각형의 완성조건
      • (1)선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
        삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
        제한사항
        • sides의 원소는 자연수입니다.
        • sides의 길이는 3입니다.
        • 1 ≤ sides의 원소 ≤ 1,000

        입출력 예
        sides result
        [1, 2, 3] 2
        [3, 6, 2] 2
        [199, 72, 222] 1

        입출력 예 설명
        • 가장 큰 변인 3이 나머지 두 변의 합 3과 같으므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.
        입출력 예 #2
        • 가장 큰 변인 6이 나머지 두 변의 합 5보다 크므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.
        입출력 예 #3
      • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

                  입출력 예 #1

    •           가장 큰 변인 222가 나머지 두 변의 합 271보다 작으므로 삼각형을 완성할 수 있습니다. 따라서 1을 return합니다.
    function solution(sides) {
      let array = sides.sort((a, b) => a - b)
      return (array[0] + array[1] > array[2] ? 1 : 2)
    }

     

     

    오늘 팀원들과 같이 알고리즘을 풀었다. 새로운 문제는 같이 풀어보면서 여러가지 방법을 생각해보고 풀었던 문제는 간결하거나 더 나은 풀이방식을 생각해보고 새로 풀어보는 방식으로 풀었다. 

    이전에 알고리즘 할때는 반복문에 너무 무지하고 조건문도 헷깔리고 매개변수등등.. 그냥 난 강의보고 따라하기를 했었고 내 머릿속에 남았던건 없었던것같다 

    그런데 온보딩커리큘럼으로 기초를 다시 듣고 문제를 푸니까 새로운 방식이 생각나고 더 좋은 방법? 이 아니더라도 다르게 푸는것도 떠오르는게 너무 신기했다. 역시 모든건 기초가 최고라고 기초를 다시 다잡아야되겠다는 생각이 너무 크게 들었다. 

Designed by Tistory.