Split Phase, ๋จ๊ณ ์ชผ๊ฐ๊ธฐ๋ฅผ ์์๋ณด์.
์์ฝ
์ฝ๋
๋ฐฐ๊ฒฝ
- ์๋ก ๋ค๋ฅธ ๋ ๋์์ ํ๊บผ๋ฒ์ ๋ค๋ฃจ๋ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ๋ณ๊ฐ ๋ชจ๋๋ก ๋๋์.
- ์์ ์์์ฝ๋๋ฅผ ๋ณด๋ฉด, ํ์ฑ ๋ก์ง๊ณผ ์ค์ ๊ณ์ฐ ๋ก์ง์ด ํผ์ฌ๋์ด ์๋ค.
- ์ฐจ๋ผ๋ฆฌ ํ์ฑ์ ํ๊ณ , ๊ณ์ฐ์ ํ๋ ๊ฒ์ ๋๋๋ฉด ํธํด์ง๋ค.
- ๋ ๋ํ์ ์ธ ์๋ก ์ปดํ์ผ๋ฌ๊ฐ ์๋ค.
- ํ ์คํธ๋ฅผ ์คํ ๊ฐ๋ฅํ ํํ๋ก ์ผ๋จ ๋ฐ๊ฟ์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๊ฐ์ง๊ณ ์ต์ ํ๋ฅผ ํ๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ชฉ์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ์ด๋ ๊ฒ ๋จ๊ณ๋ฅผ ์ชผ๊ฐ๋ฉด ๊ฐ ๋จ๊ณ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์์ด์ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
- ์ด๋ ๊ฒ ๋ค์ผ๋ฉด ๊ท๋ชจ๊ฐ ํฐ ํ๋ก๊ทธ๋จ์์ ์ ์ฉํ๋ ๊ฑฐ๋ผ ์๊ฐํ ์ ์์ผ๋,
- ๊ท๋ชจ์ ์๊ด์์ด ์ ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
์ ์ฐจ
- ๋๋ฒ์งธ ๋จ๊ณ์ ํด๋นํ๋ ์ฝ๋๋ฅผ ๋ ๋ฆฝ ํจ์๋ก ์ถ์ถํ๋ค.
- ํ ์คํธํ๋ค.
- ์ค๊ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด์ ์์์ ์ถ์ถํ ํจ์์ ์ธ์๋ก ์ถ๊ฐํ๋ค.
- ํ ์คํธํ๋ค.
- ์ถ์ถํ ๋๋ฒ์งธ ๋จ๊ณ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ํ๋์ฉ ๊ฒํ ํ๋ค.
- ์ฒซ๋ฒ์งธ ๋จ๊ณ ์ฝ๋๋ฅผ ํจ์๋ก ์ถ์ถํ๋ฉด์ ์ค๊ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ฐํํ๋๋ก ์์ ํ๋ค.
์์
- ํ๋๋ ์ํ ๊ฐ๊ฒฉ์ ๊ณ์ฐํ๋ ๊ฒ์ด๊ณ , ํ๋๋ ๋ฐฐ์ก๋น๋ฅผ ๊ณ์ฐํ๋ ๊ฒ์ด๋ค.
- ๊ฐ ๋จ๊ณ๋ฅผ ๋๋๋๊ฒ ์ ์ง๋ณด์์ ์ข์๋ณด์ธ๋ค.
๋ฐฐ์ก๋น ๊ณ์ฐ ๋ถ๋ถ ์ถ์ถ```javascript
function priceOrder(product, quantity, shippingMethod) { const basePrice = product.basePrice * quantity; const discount = Math.max(quantity - product.discountThreshold, 0) * product.basePrice * product.discountRate; const price = applyShipping(basePrice, shippingMethod, quantity, discount); return price; }
function applyShipping(basePrice, shippingMethod, quantity, discount) { const shippingPerCase = (basePrice > shippingMethod.discountThreshold) ? shippingMethod.discountedFee : shippingMethod.feePerCase; const shippingCost = quantity * shippingPerCase; const price = basePrice - discount + shippingCost; return price; }
- ๋๋ฒ์งธ ๋จ๊ณ๋ฅผ ํจ์๋ก ์ถ์ถํ๋ค.
- ์ผ๋จ ๋ค๋ฅธ ์์
ํ์ง ๋ง๊ณ ์ธ์๋ก ๋ค ๋๊ณ ๋ค์ด์ค๋๊ฒ ์ข๋ค. ํ๋ฒ์ ์ฌ๋ฌ๊ฐ ํ๋ ค๊ณ ํ๋ฉด ์๋๋ค.
## ์ค๊ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
```javascript
function priceOrder(product, quantity, shippingMethod) {
const basePrice = product.basePrice * quantity;
const discount = Math.max(quantity - product.discountThreshold, 0) * product.basePrice * product.discountRate;
const priceData = {};
const price = applyShipping(priceData, basePrice, shippingMethod, quantity, discount);
return price;
}
function applyShipping(priceData, basePrice, shippingMethod, quantity, discount) {
const shippingPerCase = (basePrice > shippingMethod.discountThreshold) ? shippingMethod.discountedFee : shippingMethod.feePerCase;
const shippingCost = quantity * shippingPerCase;
const price = basePrice - discount + shippingCost;
return price;
}
- basePrice๋ฅผ priceData๋ผ๋ ์ค๊ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ฎ๊ฒผ๋ค.
applyShipping์ ๋งค๊ฐ๋ณ์ ๊ฒํ
basePrice
๋ ์ค๊ฐ ๋ฐ์ดํฐ์์ ๋ฐ์ผ๋ฉด ๋๋ค.shippingMethod
๋ ์์์ ๊ณ์ฐํ์ง ์์ผ๋ ๋ฐ์์ผ ํ๋ค.quantity
๋ ์ค๊ฐ ๋ฐ์ดํฐ์์ ๋ฐ์ผ๋ฉด ๋๋ค. ์ํ ๊ฐ๊ฒฉ์ ๊ด๋ จ๋ ์ ๋ณด๋๊น.discount
๋ ์ค๊ฐ ๋ฐ์ดํฐ์์ ๋ฐ์ผ๋ฉด ๋๋ค.