📝 TIL

[TIL] 항해99 입학시험

오늘 ONEUL 2022. 11. 9. 19:16

✍ Today I Learned

 

항해99 입학시험

입학시험은 미리 예고했던 대로 웹개발 종합반 강의 정도의 난이도였다.
웹개발 종합반 4주차에 진행했던 “화성 땅 사기” 프로젝트에 가격 표시 기능을 추가하는 것이 문제로 나왔다.
DB에서 받아온 "n평" 중 '평'을 자르고 정수로 타입 변환한 뒤, 500원을 곱하여 빠르게 제출하였다.
다른 분들의 풀이 방식을 들어보니 크게 2가지로 나뉘었다.

  1. 프론트단에서 연산하여 출력
  2. 가격을 DB에 저장하고, 서버에서 불러온 값을 출력

나는 1번의 방식을 택했다고 볼 수 있는데, 어떤 방식이 더 효율적 일지 궁금해졌다.
효율성을 고민할 땐 극단적인 예시를 떠올려야 한다.

'list의 개수가 1억 개라면?'

무려 1억 번의 연산을 리로딩될 때마다 해야 한다.
결론적으로 2번의 방식이 더 효율적이라고 생각한다.
이미 제출은 했지만, DB에 저장하는 방식으로 다시 구현해보았다.
기존에 "n평"으로 받던 select의 value를 "n"으로 수정하고,
서버로 저장할 데이터를 보낼 때 가격을 연산하여 함께 보내 주었다.

function save_order() {
    const name = document.getElementById('name').value;
    const address = document.getElementById('address').value;
    const size = document.getElementById('size').value;
    let price = parseInt(size) * 500; // 가격 정보 함께 저장하기

    $.ajax({
        type: 'POST',
        url: '/mars',
        data: {name_give: name, address_give: address, size_give: size, price_give: price},
        success: function (response) {
            alert(response['msg'])
            window.location.reload();
        }
    });
}

 

결과는 기분 좋게 합격!
항상 어떤 식의 코드가 더 효율적 일지 고민하는 습관을 가지자.