- κ΄λ ¨ ν¨μλ₯Ό λ¬Άμ΄ ν΄λμ€λ₯Ό λ§λ€κ³ , κ°μ²΄λ€μ΄ νλ ₯νμ¬ νλμ ν° κΈ°λ₯μ μννλλ‘ νλ€.
- ν΄λμ€μ ν¨μμ λν λ¨μ ν μ€νΈλ₯Ό ν΅ν΄ μλν λλ‘ μ ννκ² μλνλ μμμ ν보νλ€.
- 3μ£Ό μ°¨ κ³΅ν΅ νΌλλ°±μ μ΅λν λ°μνλ€.
- λ―Έμ μ κΈ°λ₯ μꡬ μ¬ν, νλ‘κ·Έλλ° μꡬ μ¬ν, κ³Όμ μ§ν μꡬ μ¬ν μΈ κ°μ§λ‘ ꡬμ±λμ΄ μλ€.
- μΈ κ°μ μꡬ μ¬νμ λ§μ‘±νκΈ° μν΄ λ Έλ ₯νλ€. νΉν κΈ°λ₯μ ꡬννκΈ° μ μ κΈ°λ₯ λͺ©λ‘μ λ§λ€κ³ , κΈ°λ₯ λ¨μλ‘ μ»€λ° νλ λ°©μμΌλ‘ μ§ννλ€.
- κΈ°λ₯ μꡬ μ¬νμ κΈ°μ¬λμ§ μμ λ΄μ©μ μ€μ€λ‘ νλ¨νμ¬ κ΅¬ννλ€.
- λ―Έμ
ꡬνμ μλ£ν ν GitHubμ ν΅ν΄ μ μΆν΄μΌ νλ€.
- GitHubμ νμ©ν μ μΆ λ°©λ²μ ν리μ½μ€ κ³Όμ μ μΆ λ¬Έμλ₯Ό μ°Έκ³ ν΄ μ μΆνλ€.
- Pull Requestλ₯Ό μμ±ν λ, λ°λμ μλ μμ μ΄λ―Έμ§μ κ°μ΄
gdgoc-skhu-missions
μ‘°μ§μ μλ μ μ₯μμ λ³ΈμΈ GitHub μμ΄λ λΈλμΉμ μμ±νλ€. - Pull Requestλ₯Ό μμ±ν ν, PRμ 리뷰μ΄λ‘ 미리 λ°°μ λ 리뷰μ΄λ₯Ό μΆκ°νλ€. μΆκ°νκ³ λμ, μ΄λ‘ μ€ν°λ λμ€μ½λμ μ±κ³΅νλ LBP μ±λμμ PR λ§ν¬μ ν¨κ» λ³ΈμΈμ΄ λ°°μ λ°μ 리뷰μ΄λ₯Ό νΈμΆνλ€.
- κΈ°λ₯μ μ¬λ°λ₯΄κ² ꡬννλλΌλΒ μꡬ μ¬νμ λͺ μλ μΆλ ₯ νμμ λ°λ₯΄μ§ μμΌλ©΄ 0μ μ λ°κ² λλ€.
- κΈ°λ₯ ꡬνμ μλ£ν ν μλ κ°μ΄λμ λ°λΌ λͺ¨λ ν μ€νΈκ° μ±κ³΅μ μΌλ‘ μ€νλλμ§ νμΈνλ€.
- ν μ€νΈκ° μ€ν¨νλ©΄ μ μκ° 0μ μ΄ λλ―λ‘ μ μΆνκΈ° μ μ λ°λμ νμΈνλ€.
- IntelliJ IDEA λλ Android Studioμ κ°μ IDEμμ Kotlin 1.9.24λ‘ μ€νλλμ§ νμΈνλ€.
- ν°λ―Έλμμ Mac λλ Linux μ¬μ©μμ κ²½μ°Β
./gradlew clean test
Β λͺ λ Ήμ μ€ννκ³ , Windows μ¬μ©μμ κ²½μ°Βgradlew.bat clean test
Β λλΒ./gradlew.bat clean test
Β λͺ λ Ήμ μ€νν λ λͺ¨λ ν μ€νΈκ° μλμ κ°μ΄ ν΅κ³Όνλμ§ νμΈνλ€.
BUILD SUCCESSFUL in 0s
- λ―Έμ μΒ νΈμμ Β μ μ₯μλ₯Ό μμ±νλ κ²μΌλ‘ μμνλ€.
- κΈ°λ₯μ ꡬννκΈ° μ Β
README.md
μ ꡬνν κΈ°λ₯ λͺ©λ‘μ μ λ¦¬ν΄ μΆκ°νλ€. - Gitμ μ»€λ° λ¨μλ μ λ¨κ³μμΒ
README.md
μ μ 리ν κΈ°λ₯ λͺ©λ‘ λ¨μλ‘ μΆκ°νλ€.- AngularJS Git Commit Message Conventionsμ μ°Έκ³ ν΄ μ»€λ° λ©μμ§λ₯Ό μμ±νλ€.
- μμΈν κ³Όμ μ§ν λ°©λ²μ ν리μ½μ€ μ§ν κ°μ΄λ λ¬Έμλ₯Ό μ°Έκ³ νλ€.
ꡬ맀μμ ν μΈ ννκ³Ό μ¬κ³ μν©μ κ³ λ €νμ¬ μ΅μ’ κ²°μ κΈμ‘μ κ³μ°νκ³ μλ΄νλ κ²°μ μμ€ν μ ꡬννλ€.
- μ¬μ©μκ° μ
λ ₯ν μνμ κ°κ²©κ³Ό μλμ κΈ°λ°μΌλ‘ μ΅μ’
κ²°μ κΈμ‘μ κ³μ°νλ€.
- μ΄κ΅¬λ§€μ‘μ μνλ³ κ°κ²©κ³Ό μλμ κ³±νμ¬ κ³μ°νλ©°, νλ‘λͺ¨μ λ° λ©€λ²μ ν μΈ μ μ± μ λ°μνμ¬ μ΅μ’ κ²°μ κΈμ‘μ μ°μΆνλ€.
- ꡬ맀 λ΄μκ³Ό μ°μΆν κΈμ‘ μ 보λ₯Ό μμμ¦μΌλ‘ μΆλ ₯νλ€.
- μμμ¦ μΆλ ₯ ν μΆκ° ꡬ맀λ₯Ό μ§νν μ§ λλ μ’ λ£ν μ§λ₯Ό μ νν μ μλ€.
- μ¬μ©μκ° μλͺ»λ κ°μ μ
λ ₯ν κ²½μ°Β
IllegalArgumentException
λ₯Ό λ°μμν€κ³ , "[ERROR]"λ‘ μμνλ μλ¬ λ©μμ§λ₯Ό μΆλ ₯ ν κ·Έ λΆλΆλΆν° μ λ ₯μ λ€μ λ°λλ€.Exception
μ΄ μλΒIllegalArgumentException
,ΒIllegalStateException
Β λ±κ³Ό κ°μ λͺ νν μ νμ μ²λ¦¬νλ€.
- κ° μνμ μ¬κ³ μλμ κ³ λ €νμ¬ κ²°μ κ°λ₯ μ¬λΆλ₯Ό νμΈνλ€.
- κ³ κ°μ΄ μνμ ꡬ맀ν λλ§λ€, κ²°μ λ μλλ§νΌ ν΄λΉ μνμ μ¬κ³ μμ μ°¨κ°νμ¬ μλμ κ΄λ¦¬νλ€.
- μ¬κ³ λ₯Ό μ°¨κ°ν¨μΌλ‘μ¨ μμ€ν μ μ΅μ μ¬κ³ μνλ₯Ό μ μ§νλ©°, λ€μ κ³ κ°μ΄ ꡬ맀ν λ μ νν μ¬κ³ μ 보λ₯Ό μ 곡νλ€.
- μ€λ λ μ§κ° νλ‘λͺ¨μ κΈ°κ° λ΄μ ν¬ν¨λ κ²½μ°μλ§ ν μΈμ μ μ©νλ€.
- νλ‘λͺ¨μ μ Nκ° κ΅¬λ§€ μ 1κ° λ¬΄λ£ μ¦μ (Buy N Get 1 Free)μ ννλ‘ μ§νλλ€.
- 1+1 λλ 2+1 νλ‘λͺ¨μ μ΄ κ°κ° μ§μ λ μνμ μ μ©λλ©°, λμΌ μνμ μ¬λ¬ νλ‘λͺ¨μ μ΄ μ μ©λμ§ μλλ€.
- νλ‘λͺ¨μ ννμ νλ‘λͺ¨μ μ¬κ³ λ΄μμλ§ μ μ©ν μ μλ€.
- νλ‘λͺ¨μ κΈ°κ° μ€μ΄λΌλ©΄ νλ‘λͺ¨μ μ¬κ³ λ₯Ό μ°μ μ μΌλ‘ μ°¨κ°νλ©°, νλ‘λͺ¨μ μ¬κ³ κ° λΆμ‘±ν κ²½μ°μλ μΌλ° μ¬κ³ λ₯Ό μ¬μ©νλ€.
- νλ‘λͺ¨μ μ μ©μ΄ κ°λ₯ν μνμ λν΄ κ³ κ°μ΄ ν΄λΉ μλλ³΄λ€ μ κ² κ°μ Έμ¨ κ²½μ°, νμν μλμ μΆκ°λ‘ κ°μ Έμ€λ©΄ ννμ λ°μ μ μμμ μλ΄νλ€.
- νλ‘λͺ¨μ μ¬κ³ κ° λΆμ‘±νμ¬ μΌλΆ μλμ νλ‘λͺ¨μ νν μμ΄ κ²°μ ν΄μΌ νλ κ²½μ°, μΌλΆ μλμ λν΄ μ κ°λ‘ κ²°μ νκ² λ¨μ μλ΄νλ€.
- λ©€λ²μ νμμ νλ‘λͺ¨μ λ―Έμ μ© κΈμ‘μ 30%λ₯Ό ν μΈλ°λλ€.
- νλ‘λͺ¨μ μ μ© ν λ¨μ κΈμ‘μ λν΄ λ©€λ²μ ν μΈμ μ μ©νλ€.
- λ©€λ²μ ν μΈμ μ΅λ νλλ 8,000μμ΄λ€.
- μμμ¦μ κ³ κ°μ ꡬ맀 λ΄μκ³Ό ν μΈμ μμ½νμ¬ μΆλ ₯νλ€.
- μμμ¦ νλͺ©μ μλμ κ°λ€.
- ꡬ맀 μν λ΄μ: ꡬ맀ν μνλͺ , μλ, κ°κ²©
- μ¦μ μν λ΄μ: νλ‘λͺ¨μ μ λ°λΌ 무λ£λ‘ μ 곡λ μ¦μ μνμ λͺ©λ‘
- κΈμ‘ μ 보
- μ΄κ΅¬λ§€μ‘: ꡬ맀ν μνμ μ΄ μλκ³Ό μ΄ κΈμ‘
- νμ¬ν μΈ: νλ‘λͺ¨μ μ μν΄ ν μΈλ κΈμ‘
- λ©€λ²μν μΈ: λ©€λ²μμ μν΄ μΆκ°λ‘ ν μΈλ κΈμ‘
- λ΄μ€λ: μ΅μ’ κ²°μ κΈμ‘
- μμμ¦μ κ΅¬μ± μμλ₯Ό 보기 μ’κ² μ λ ¬νμ¬ κ³ κ°μ΄ μ½κ² κΈμ‘κ³Ό μλμ νμΈν μ μκ² νλ€.
- ꡬνμ νμν μν λͺ©λ‘κ³Ό νμ¬ λͺ©λ‘μ νμΌ μ
μΆλ ₯μ ν΅ν΄ λΆλ¬μ¨λ€.
src/main/resources/products.md
κ³ΌΒsrc/main/resources/promotions.md
Β νμΌμ μ΄μ©νλ€.- λ νμΌ λͺ¨λ λ΄μ©μ νμμ μ μ§νλ€λ©΄ κ°μ μμ ν μ μλ€.
- ꡬ맀ν μνκ³Ό μλμ μ λ ₯ λ°λλ€. μνλͺ , μλμ νμ΄ν(-)μΌλ‘, κ°λ³ μνμ λκ΄νΈ([])λ‘ λ¬Άμ΄ μΌν(,)λ‘ κ΅¬λΆνλ€.
[μ½λΌ-10],[μ¬μ΄λ€-3]
- νλ‘λͺ¨μ
μ μ©μ΄ κ°λ₯ν μνμ λν΄ κ³ κ°μ΄ ν΄λΉ μλλ³΄λ€ μ κ² κ°μ Έμ¨ κ²½μ°, κ·Έ μλλ§νΌ μΆκ° μ¬λΆλ₯Ό μ
λ ₯λ°λλ€.
- Y: μ¦μ λ°μ μ μλ μνμ μΆκ°νλ€.
- N: μ¦μ λ°μ μ μλ μνμ μΆκ°νμ§ μλλ€.
Y
- νλ‘λͺ¨μ
μ¬κ³ κ° λΆμ‘±νμ¬ μΌλΆ μλμ νλ‘λͺ¨μ
νν μμ΄ κ²°μ ν΄μΌ νλ κ²½μ°, μΌλΆ μλμ λν΄ μ κ°λ‘ κ²°μ ν μ§ μ¬λΆλ₯Ό μ
λ ₯λ°λλ€.
- Y: μΌλΆ μλμ λν΄ μ κ°λ‘ κ²°μ νλ€.
- N: μ κ°λ‘ κ²°μ ν΄μΌνλ μλλ§νΌ μ μΈν ν κ²°μ λ₯Ό μ§ννλ€.
Y
- λ©€λ²μ ν μΈ μ μ© μ¬λΆλ₯Ό μ
λ ₯ λ°λλ€.
- Y: λ©€λ²μ ν μΈμ μ μ©νλ€.
- N: λ©€λ²μ ν μΈμ μ μ©νμ§ μλλ€.
Y
- μΆκ° ꡬ맀 μ¬λΆλ₯Ό μ
λ ₯ λ°λλ€.
- Y: μ¬κ³ κ° μ λ°μ΄νΈλ μν λͺ©λ‘μ νμΈ ν μΆκ°λ‘ ꡬ맀λ₯Ό μ§ννλ€.
- N: ꡬ맀λ₯Ό μ’ λ£νλ€.
Y
- νμ μΈμ¬μ ν¨κ» μνλͺ
, κ°κ²©, νλ‘λͺ¨μ
μ΄λ¦, μ¬κ³ λ₯Ό μλ΄νλ€. λ§μ½ μ¬κ³ κ° 0κ°λΌλ©΄Β
μ¬κ³ μμ
μ μΆλ ₯νλ€.
μλ
νμΈμ. WνΈμμ μ
λλ€.
νμ¬ λ³΄μ νκ³ μλ μνμ
λλ€.
- μ½λΌ 1,000μ 10κ° νμ°2+1
- μ½λΌ 1,000μ 10κ°
- μ¬μ΄λ€ 1,000μ 8κ° νμ°2+1
- μ¬μ΄λ€ 1,000μ 7κ°
- μ€λ μ§μ£Όμ€ 1,800μ 9κ° MDμΆμ²μν
- μ€λ μ§μ£Όμ€ 1,800μ μ¬κ³ μμ
- νμ°μ 1,200μ 5κ° νμ°2+1
- νμ°μ 1,200μ μ¬κ³ μμ
- λ¬Ό 500μ 10κ°
- λΉνλ―Όμν° 1,500μ 6κ°
- κ°μμΉ© 1,500μ 5κ° λ°μ§ν μΈ
- κ°μμΉ© 1,500μ 5κ°
- μ΄μ½λ° 1,200μ 5κ° MDμΆμ²μν
- μ΄μ½λ° 1,200μ 5κ°
- μλμ§λ° 2,000μ 5κ°
- μ μλμλ½ 6,400μ 8κ°
- μ»΅λΌλ©΄ 1,700μ 1κ° MDμΆμ²μν
- μ»΅λΌλ©΄ 1,700μ 10κ°
ꡬ맀νμ€ μνλͺ
κ³Ό μλμ μ
λ ₯ν΄ μ£ΌμΈμ. (μ: [μ¬μ΄λ€-2],[κ°μμΉ©-1])
- νλ‘λͺ¨μ μ μ©μ΄ κ°λ₯ν μνμ λν΄ κ³ κ°μ΄ ν΄λΉ μλλ§νΌ κ°μ Έμ€μ§ μμμ κ²½μ°, ννμ λν μλ΄ λ©μμ§λ₯Ό μΆλ ₯νλ€.
νμ¬ {μνλͺ
}μ(λ) 1κ°λ₯Ό 무λ£λ‘ λ λ°μ μ μμ΅λλ€. μΆκ°νμκ² μ΅λκΉ? (Y/N)
- νλ‘λͺ¨μ μ¬κ³ κ° λΆμ‘±νμ¬ μΌλΆ μλμ νλ‘λͺ¨μ νν μμ΄ κ²°μ ν΄μΌ νλ κ²½μ°, μΌλΆ μλμ λν΄ μ κ°λ‘ κ²°μ ν μ§ μ¬λΆμ λν μλ΄ λ©μμ§λ₯Ό μΆλ ₯νλ€.
νμ¬ {μνλͺ
} {μλ}κ°λ νλ‘λͺ¨μ
ν μΈμ΄ μ μ©λμ§ μμ΅λλ€. κ·Έλλ ꡬ맀νμκ² μ΅λκΉ? (Y/N)
- λ©€λ²μ ν μΈ μ μ© μ¬λΆλ₯Ό νμΈνκΈ° μν΄ μλ΄ λ¬Έκ΅¬λ₯Ό μΆλ ₯νλ€.
λ©€λ²μ ν μΈμ λ°μΌμκ² μ΅λκΉ? (Y/N)
- ꡬ맀 μν λ΄μ, μ¦μ μν λ΄μ, κΈμ‘ μ 보λ₯Ό μΆλ ₯νλ€.
===========W νΈμμ =============
μνλͺ
μλ κΈμ‘
μ½λΌ 3 3,000
μλμ§λ° 5 10,000
===========μ¦ μ =============
μ½λΌ 1
==============================
μ΄κ΅¬λ§€μ‘ 8 13,000
νμ¬ν μΈ -1,000
λ©€λ²μν μΈ -3,000
λ΄μ€λ 9,000
- μΆκ° ꡬ맀 μ¬λΆλ₯Ό νμΈνκΈ° μν΄ μλ΄ λ¬Έκ΅¬λ₯Ό μΆλ ₯νλ€.
κ°μ¬ν©λλ€. ꡬ맀νκ³ μΆμ λ€λ₯Έ μνμ΄ μλμ? (Y/N)
- μ¬μ©μκ° μλͺ»λ κ°μ μ
λ ₯νμ λ, "[ERROR]"λ‘ μμνλ μ€λ₯ λ©μμ§μ ν¨κ» μν©μ λ§λ μλ΄λ₯Ό μΆλ ₯νλ€.
- ꡬ맀ν μνκ³Ό μλ νμμ΄ μ¬λ°λ₯΄μ§ μμ κ²½μ°:Β
[ERROR] μ¬λ°λ₯΄μ§ μμ νμμΌλ‘ μ λ ₯νμ΅λλ€. λ€μ μ λ ₯ν΄ μ£ΌμΈμ.
- μ‘΄μ¬νμ§ μλ μνμ μ
λ ₯ν κ²½μ°:Β
[ERROR] μ‘΄μ¬νμ§ μλ μνμ λλ€. λ€μ μ λ ₯ν΄ μ£ΌμΈμ.
- ꡬ맀 μλμ΄ μ¬κ³ μλμ μ΄κ³Όν κ²½μ°:Β
[ERROR] μ¬κ³ μλμ μ΄κ³Όνμ¬ κ΅¬λ§€ν μ μμ΅λλ€. λ€μ μ λ ₯ν΄ μ£ΌμΈμ.
- κΈ°ν μλͺ»λ μ
λ ₯μ κ²½μ°:Β
[ERROR] μλͺ»λ μ λ ₯μ λλ€. λ€μ μ λ ₯ν΄ μ£ΌμΈμ.
- ꡬ맀ν μνκ³Ό μλ νμμ΄ μ¬λ°λ₯΄μ§ μμ κ²½μ°:Β
μλ
νμΈμ. WνΈμμ μ
λλ€.
νμ¬ λ³΄μ νκ³ μλ μνμ
λλ€.
- μ½λΌ 1,000μ 10κ° νμ°2+1
- μ½λΌ 1,000μ 10κ°
- μ¬μ΄λ€ 1,000μ 8κ° νμ°2+1
- μ¬μ΄λ€ 1,000μ 7κ°
- μ€λ μ§μ£Όμ€ 1,800μ 9κ° MDμΆμ²μν
- μ€λ μ§μ£Όμ€ 1,800μ μ¬κ³ μμ
- νμ°μ 1,200μ 5κ° νμ°2+1
- νμ°μ 1,200μ μ¬κ³ μμ
- λ¬Ό 500μ 10κ°
- λΉνλ―Όμν° 1,500μ 6κ°
- κ°μμΉ© 1,500μ 5κ° λ°μ§ν μΈ
- κ°μμΉ© 1,500μ 5κ°
- μ΄μ½λ° 1,200μ 5κ° MDμΆμ²μν
- μ΄μ½λ° 1,200μ 5κ°
- μλμ§λ° 2,000μ 5κ°
- μ μλμλ½ 6,400μ 8κ°
- μ»΅λΌλ©΄ 1,700μ 1κ° MDμΆμ²μν
- μ»΅λΌλ©΄ 1,700μ 10κ°
ꡬ맀νμ€ μνλͺ
κ³Ό μλμ μ
λ ₯ν΄ μ£ΌμΈμ. (μ: [μ¬μ΄λ€-2],[κ°μμΉ©-1])
[μ½λΌ-3],[μλμ§λ°-5]
λ©€λ²μ ν μΈμ λ°μΌμκ² μ΅λκΉ? (Y/N)
Y
===========W νΈμμ =============
μνλͺ
μλ κΈμ‘
μ½λΌ 3 3,000
μλμ§λ° 5 10,000
===========μ¦ μ =============
μ½λΌ 1
==============================
μ΄κ΅¬λ§€μ‘ 8 13,000
νμ¬ν μΈ -1,000
λ©€λ²μν μΈ -3,000
λ΄μ€λ 9,000
κ°μ¬ν©λλ€. ꡬ맀νκ³ μΆμ λ€λ₯Έ μνμ΄ μλμ? (Y/N)
Y
μλ
νμΈμ. WνΈμμ μ
λλ€.
νμ¬ λ³΄μ νκ³ μλ μνμ
λλ€.
- μ½λΌ 1,000μ 7κ° νμ°2+1
- μ½λΌ 1,000μ 10κ°
- μ¬μ΄λ€ 1,000μ 8κ° νμ°2+1
- μ¬μ΄λ€ 1,000μ 7κ°
- μ€λ μ§μ£Όμ€ 1,800μ 9κ° MDμΆμ²μν
- μ€λ μ§μ£Όμ€ 1,800μ μ¬κ³ μμ
- νμ°μ 1,200μ 5κ° νμ°2+1
- νμ°μ 1,200μ μ¬κ³ μμ
- λ¬Ό 500μ 10κ°
- λΉνλ―Όμν° 1,500μ 6κ°
- κ°μμΉ© 1,500μ 5κ° λ°μ§ν μΈ
- κ°μμΉ© 1,500μ 5κ°
- μ΄μ½λ° 1,200μ 5κ° MDμΆμ²μν
- μ΄μ½λ° 1,200μ 5κ°
- μλμ§λ° 2,000μ μ¬κ³ μμ
- μ μλμλ½ 6,400μ 8κ°
- μ»΅λΌλ©΄ 1,700μ 1κ° MDμΆμ²μν
- μ»΅λΌλ©΄ 1,700μ 10κ°
ꡬ맀νμ€ μνλͺ
κ³Ό μλμ μ
λ ₯ν΄ μ£ΌμΈμ. (μ: [μ¬μ΄λ€-2],[κ°μμΉ©-1])
[μ½λΌ-10]
νμ¬ μ½λΌ 4κ°λ νλ‘λͺ¨μ
ν μΈμ΄ μ μ©λμ§ μμ΅λλ€. κ·Έλλ ꡬ맀νμκ² μ΅λκΉ? (Y/N)
Y
λ©€λ²μ ν μΈμ λ°μΌμκ² μ΅λκΉ? (Y/N)
N
===========W νΈμμ =============
μνλͺ
μλ κΈμ‘
μ½λΌ 10 10,000
===========μ¦ μ =============
μ½λΌ 2
==============================
μ΄κ΅¬λ§€μ‘ 10 10,000
νμ¬ν μΈ -2,000
λ©€λ²μν μΈ -0
λ΄μ€λ 8,000
κ°μ¬ν©λλ€. ꡬ맀νκ³ μΆμ λ€λ₯Έ μνμ΄ μλμ? (Y/N)
Y
μλ
νμΈμ. WνΈμμ μ
λλ€.
νμ¬ λ³΄μ νκ³ μλ μνμ
λλ€.
- μ½λΌ 1,000μ μ¬κ³ μμ νμ°2+1
- μ½λΌ 1,000μ 7κ°
- μ¬μ΄λ€ 1,000μ 8κ° νμ°2+1
- μ¬μ΄λ€ 1,000μ 7κ°
- μ€λ μ§μ£Όμ€ 1,800μ 9κ° MDμΆμ²μν
- μ€λ μ§μ£Όμ€ 1,800μ μ¬κ³ μμ
- νμ°μ 1,200μ 5κ° νμ°2+1
- νμ°μ 1,200μ μ¬κ³ μμ
- λ¬Ό 500μ 10κ°
- λΉνλ―Όμν° 1,500μ 6κ°
- κ°μμΉ© 1,500μ 5κ° λ°μ§ν μΈ
- κ°μμΉ© 1,500μ 5κ°
- μ΄μ½λ° 1,200μ 5κ° MDμΆμ²μν
- μ΄μ½λ° 1,200μ 5κ°
- μλμ§λ° 2,000μ μ¬κ³ μμ
- μ μλμλ½ 6,400μ 8κ°
- μ»΅λΌλ©΄ 1,700μ 1κ° MDμΆμ²μν
- μ»΅λΌλ©΄ 1,700μ 10κ°
ꡬ맀νμ€ μνλͺ
κ³Ό μλμ μ
λ ₯ν΄ μ£ΌμΈμ. (μ: [μ¬μ΄λ€-2],[κ°μμΉ©-1])
[μ€λ μ§μ£Όμ€-1]
νμ¬ μ€λ μ§μ£Όμ€μ(λ) 1κ°λ₯Ό 무λ£λ‘ λ λ°μ μ μμ΅λλ€. μΆκ°νμκ² μ΅λκΉ? (Y/N)
Y
λ©€λ²μ ν μΈμ λ°μΌμκ² μ΅λκΉ? (Y/N)
Y
===========W νΈμμ =============
μνλͺ
μλ κΈμ‘
μ€λ μ§μ£Όμ€ 2 3,600
===========μ¦ μ =============
μ€λ μ§μ£Όμ€ 1
==============================
μ΄κ΅¬λ§€μ‘ 2 3,600
νμ¬ν μΈ -1,800
λ©€λ²μν μΈ -0
λ΄μ€λ 1,800
κ°μ¬ν©λλ€. ꡬ맀νκ³ μΆμ λ€λ₯Έ μνμ΄ μλμ? (Y/N)
N
- Kotlin 1.9.24μμ μ€ν κ°λ₯ν΄μΌ νλ€.
- Java μ½λκ° μλ Kotlin μ½λλ‘λ§ κ΅¬νν΄μΌ νλ€.
- νλ‘κ·Έλ¨ μ€νμ μμμ μΒ
Application
μΒmain()
μ΄λ€. build.gradle.kts
Β νμΌμ λ³κ²½ν μ μμΌλ©°,Β μ 곡λ λΌμ΄λΈλ¬λ¦¬ μ΄μΈμ μΈλΆ λΌμ΄λΈλ¬λ¦¬λ μ¬μ©νμ§ μλλ€.- νλ‘κ·Έλ¨ μ’
λ£ μΒ
System.exit()
Β λλΒexitProcess()
λ₯Ό νΈμΆνμ§ μλλ€. - νλ‘κ·Έλλ° μꡬ μ¬νμμ λ¬λ¦¬ λͺ μνμ§ μλ ν νμΌ, ν¨ν€μ§ λ±μ μ΄λ¦μ λ°κΎΈκ±°λ μ΄λνμ§ μλλ€.
- μ½νλ¦° μ½λ 컨벀μ
μ μ§ν€λ©΄μ νλ‘κ·Έλλ°νλ€.
- κΈ°λ³Έμ μΌλ‘Β Kotlin Style Guideλ₯Ό μμΉμΌλ‘ νλ€.
- indent(μΈλ΄νΈ, λ€μ¬μ°κΈ°) depthλ₯Ό 3μ΄ λμ§ μλλ‘ κ΅¬ννλ€. 2κΉμ§λ§ νμ©νλ€.
- μλ₯Ό λ€μ΄ whileλ¬Έ μμ ifλ¬Έμ΄ μμΌλ©΄ λ€μ¬μ°κΈ°λ 2μ΄λ€.
- ννΈ: indent(μΈλ΄νΈ, λ€μ¬μ°κΈ°) depthλ₯Ό μ€μ΄λ μ’μ λ°©λ²μ ν¨μ(λλ λ©μλ)λ₯Ό λΆλ¦¬νλ©΄ λλ€.
- ν¨μ(λλ λ©μλ)κ° ν κ°μ§ μΌλ§ νλλ‘ μ΅λν μκ² λ§λ€μ΄λΌ.
- JUnit 5μ AssertJλ₯Ό μ΄μ©νμ¬ μ 리ν κΈ°λ₯ λͺ©λ‘μ΄ μ μμ μΌλ‘ μλνλμ§ ν
μ€νΈ μ½λλ‘ νμΈνλ€.
- ν μ€νΈ λꡬ μ¬μ©λ²μ΄ μ΅μνμ§ μλ€λ©΄ μλ λ¬Έμλ₯Ό μ°Έκ³ νμ¬ νμ΅ν ν ν μ€νΈλ₯Ό ꡬννλ€.
- elseλ₯Ό μ§μνλ€.
- λλ‘λ if/else, whenλ¬Έμ μ¬μ©νλ κ²μ΄ λ κΉλν΄ λ³΄μΌ μ μλ€. μ΄λ κ²½μ°μ μ°λ κ²μ΄ μ μ ν μ§ μ€μ€λ‘ κ³ λ―Όν΄ λ³Έλ€.
- ννΈ: if 쑰건μ μμ κ°μ returnνλ λ°©μμΌλ‘ ꡬννλ©΄ elseλ₯Ό μ¬μ©νμ§ μμλ λλ€.
- Enum ν΄λμ€λ₯Ό μ μ©νμ¬ νλ‘κ·Έλ¨μ ꡬννλ€.
- ꡬνν κΈ°λ₯μ λν λ¨μ ν μ€νΈλ₯Ό μμ±νλ€. λ¨, UI(System.out, System.in, Scanner) λ‘μ§μ μ μΈνλ€.
-
ν¨μ(λλ λ©μλ)μ κΈΈμ΄κ° 10λΌμΈμ λμ΄κ°μ§ μλλ‘ κ΅¬ννλ€.
- ν¨μ(λλ λ©μλ)κ° ν κ°μ§ μΌλ§ μ νλλ‘ κ΅¬ννλ€.
-
μ μΆλ ₯μ λ΄λΉνλ ν΄λμ€λ₯Ό λ³λλ‘ κ΅¬ννλ€.
- μλΒ
InputView
,ΒOutputView
Β ν΄λμ€λ₯Ό μ°Έκ³ νμ¬ μ μΆλ ₯ ν΄λμ€λ₯Ό ꡬννλ€. - ν΄λμ€ μ΄λ¦, λ©μλ λ°ν μ ν, μκ·Έλμ² λ±μ μμ λ‘κ² μμ ν μ μλ€.
class InputView { fun readItem(): String { println("ꡬ맀νμ€ μνλͺ κ³Ό μλμ μ λ ₯ν΄ μ£ΌμΈμ. (μ: [μ¬μ΄λ€-2],[κ°μμΉ©-1])") val input = Console.readLine() // ... } // ... }
class OutputView { fun printProducts() { println("- μ½λΌ 1,000μ 10κ° νμ°2+1") // ... } // ... }
- μλΒ
camp.nextstep.edu.missionutils
μμ μ 곡νλΒDateTimes
Β λ°ΒConsole
Β APIλ₯Ό μ¬μ©νμ¬ κ΅¬νν΄μΌ νλ€.- νμ¬ λ μ§μ μκ°μ κ°μ Έμ€λ €λ©΄Β
camp.nextstep.edu.missionutils.DateTimes
μΒnow()
λ₯Ό νμ©νλ€. - μ¬μ©μκ° μ
λ ₯νλ κ°μΒ
camp.nextstep.edu.missionutils.Console
μΒreadLine()
μ νμ©νλ€.
- νμ¬ λ μ§μ μκ°μ κ°μ Έμ€λ €λ©΄Β