📜 목차

알고리즘

예산

피보나치 수

NestJS

결제 프로세스의 이해

Iamport

GraphQL-API / Rest-API

알고리즘

📌 isSafeInteger()

2**53 - 1 + 25 
// 9007199254741016
123123123123123123123123123123123123123123123123 
//1.2312312312312312e+47, 이상한 형태로 나온다?

a= Number.MAX_SAFE_INTEGER // 9007199254740991

Number.isSafeInteger( a ) // true
Number.isSafeInteger( a+1 ) // false

Number.isSafeInteger() - JavaScript | MDN


💭 예산

// S사에서는 각 부서에 필요한 물품을 지원해 주기 위해
// 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 
// 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 
// 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다.

// 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 
// 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 
// 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.

// 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 
// 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요.

// d는 부서별로 신청한 금액이 들어있는 배열이며, 
// 길이(전체 부서의 개수)는 1 이상 100 이하입니다.
// d의 각 원소는 부서별로 신청한 금액, 부서별 신청 금액은 1 이상 100,000 이하의 자연수입니다.
// budget은 예산을 나타내며, 1 이상 10,000,000 이하의 자연수입니다.

function solution(d, budget) {
    const answer = [];
    
    // 모든 부서가 신청한 금액을 낮은 금액부터 높은 금액까지 정렬
    d.sort((a,b)=> a-b)
    
    // 부서들이 신청한 금액의 총합
    let sum = 0   
    
    for (let i = 0 ; i <d.length; i++){
        // d[i] : 각각의 부서가 신청한 금액
        sum += d[i]
        if(sum<= budget){
            answer.push(d[i])
        }
    }
    return answer.length 
}

// sort(),filter() 사용한 풀이

function solution(d, budget) {
    const answer = d.sort((a,b)=> a-b).filter(money =>{
        // 총 예산을 지원금에서 차감
        budget -=money
        if (budget >=0){
            return money
        }
    })
    return answer.length
}

💭 피보나치 수

// 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 
// F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.
// 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, 
// solution을 완성해 주세요.

// 돌릴 때마다 나누면 속도 나오고 통과
// 마지막에 1234567 나누면 속도 안나온당! safeInteger가 아니라 실패~ (=너무 큰 수라서!) 
function solution(n) {
    // 피보나치 수열을 저장하는 배열
    // 0,1을 초기값으로 설정
    let answer = [0,1]
    
    for (let i = 2 ; i <=n ; i++){
        answer[i] = (answer[i-1] +answer[i-2] ) % 1234567
    }
    return answer[n]
    // return answer[n] % 1234567
    // 이건 안됨 ㅎㅎ
}

// reduce() 사용한 풀이
function solution(n) {
    let prev = 0 // 0번째 피보나치 수의 결과
    let next = 1 // 1번째 피보나치 수의 결과
    let sum = prev + next // 2번째 피보나치 수의 결과
    
    const answer = new Array(n-1).fill(1).reduce( cur => {
        sum = (prev + cur) % 1234567
        prev = cur
        next = sum
        
        return sum 
    },sum)
    return answer
}


NestJS

<aside> 🤓 결제가 어떻게 이뤄지는지 그 과정이랑 결제가 어떻게 DB에 적용되는지 알아볼까?

</aside>


0. 결제 프로세스의 이해