ν΄λΌμ°λ μ»΄ν¨ν
μ΄λ?ν΄λΌμ°λ μ»΄ν¨ν
(Cloud Computing)μ μΈν°λ·μ ν΅ν΄ IT μμ(μλ², μ€ν 리μ§, λ°μ΄ν°λ² μ΄μ€, λ€νΈμν¬, μννΈμ¨μ΄ λ±)μ μ 곡νλ μλΉμ€μ΄λ€. μ ν΅μ μΈ IT μΈνλΌλ 물리μ μΈ μλ²λ μ μ₯ μ₯μΉλ₯Ό μ§μ ꡬ맀νκ³ κ΄λ¦¬ν΄μΌ νμ§λ§, ν΄λΌμ°λ μ»΄ν¨ν
μ μ΄μ©νλ©΄ νμν λλ§ μμμ λΉλ € μ°κ³ μ¬μ©ν λ§νΌλ§ λΉμ©μ μ§λΆνλ©΄ λλ€.μλ₯Ό λ€μ΄, μ°λ¦¬κ° μ κΈ°λ₯Ό μ¬μ©ν λ λ°μ μλ₯Ό μ§μ μ΄μνμ§ μκ³ νμν λλ§ μ λ ₯νμ¬μ μ κΈ°λ₯Ό μ¬μ©νλ κ²κ³Ό λΉμ·ν κ°λ
μ΄λ€. ν΄λΌμ°λ μ»΄ν¨ν
μ μ΄λ¬ν λ°©μμΌλ‘ IT μΈνλΌλ₯Ό μ 곡νμ¬ κΈ°μ
κ³Ό κ°μΈμ΄ λμ± ν¨μ¨μ μΌλ‘ κΈ°μ μ νμ©ν μ μλλ‘ λμμ€λ€.ν΄λΌμ°λ μ»΄ν¨ν
μ νΉμ§1) μ¨λ맨λ(Self-Service)μ¬μ©μκ° μ§μ νμν λ μνλ IT μμμ μΆκ°ν..
μ 체 κΈ
κΉνμΈμ 무μμ 곡λΆν κΉ
μλλ‘μ΄λ μ ν리μΌμ΄μ
κ°λ°μμ UI μν κ΄λ¦¬λ μ¬μ©μ κ²½νμ ν΅μ¬ μμλ€. νΉν, Jetpack Composeμ κ°μ μ μΈν UI νλ μμν¬μμλ μνμ μ΄λ²€νΈλ₯Ό λͺ
νν κ΄λ¦¬νλ κ²μ΄ μ€μνλ€. μ΄λ₯Ό ν¨κ³Όμ μΌλ‘ ꡬννλ λ°©λ² μ€ νλκ° μν νλλ₯Ό νμ©νλ κ²μ΄λ€. μνλ?UIμ μν(State)λ μ¬μ©μμ μ
λ ₯μ΄λ μΈλΆ λ°μ΄ν° λ³νμ λ°λΌ λ°λλ κ°μ΄λ€. μνλ UIλ₯Ό κ²°μ μ§λ μ€μν μμλ‘, μ μΈν UI νλ μμν¬μμλ μνκ° λ³κ²½λλ©΄ UIκ° μλμΌλ‘ μ
λ°μ΄νΈλλ€.μνμ μμμ¬μ©μκ° λ²νΌμ λλ¬ λ‘λ© μ€ μνκ° νμ±νλ¨API μμ² ν λ°μ΄ν°λ₯Ό κ°μ Έμ νλ©΄μ νμ체ν¬λ°μ€κ° μ νλμλμ§ μ¬λΆμ΄λ¬ν μνλ₯Ό ν¨κ³Όμ μΌλ‘ κ΄λ¦¬νκΈ° μν΄ μν νλκ° νμνλ€. λ‘μ§μ΄λ?UI μνλ μ μ μ΄μ§ μμΌλ©° μ ν리μΌμ΄..
μλλ‘μ΄λ μ±μμ UI μ΄λ²€νΈλ μ¬μ©μμ μ ν리μΌμ΄μ
κ°μ ν΅μ¬μ μΈ μνΈμμ©μ λ΄λΉνλ€. μλ₯Ό λ€μ΄, λ²νΌ ν΄λ¦, μ€ν¬λ‘€, μ
λ ₯ νλ λ³κ²½ λ±μ λμμ΄ λͺ¨λ μ΄λ²€νΈλ‘ μ²λ¦¬λλ€. μ΄λ¬ν μ΄λ²€νΈλ₯Ό ν¨κ³Όμ μΌλ‘ κ΄λ¦¬νμ§ μμΌλ©΄ μ±μ μλ΅μ±μ΄ λ¨μ΄μ§κ±°λ μκΈ°μΉ λͺ»ν λμμ΄ λ°μν μ μλ€. λ°λΌμ, 체κ³μ μΈ μ΄λ²€νΈ μ²λ¦¬ λ°©μμ΄ νμνλ€. UI μ΄λ²€νΈ μ²λ¦¬μ κΈ°λ³Έ μμΉ1. λ¨λ°©ν₯ λ°μ΄ν° νλ¦(One-way Data Flow, UDF) μ μ§μλλ‘μ΄λμμ UI μνλ₯Ό κ΄λ¦¬ν λ λ¨λ°©ν₯ λ°μ΄ν° νλ¦μ μ μ§νλ κ²μ΄ μ€μνλ€.μ¦, μ΄λ²€νΈ β μν λ³κ²½ β UI μ
λ°μ΄νΈμ νλ¦μ λ°λΌμΌ νλ€.μ΄λ¬ν ꡬ쑰λ₯Ό λ°λ₯΄λ©΄ μν λ³νμ μμΈμ μΆμ νκΈ° μ¬μμ§κ³ , λλ²κΉ
μ΄ κ°νΈν΄μ§λ€. λν, μκΈ°μΉ λͺ»ν λΆμμ©μ λ°©μ§νμ¬ μ μ§λ³΄μμ±μ ..

μλλ‘μ΄λ μ±μ UI λ μ΄μ΄λ μ¬μ©μμμ μνΈμμ©μ μ²λ¦¬νλ©°, νλ©΄μ λ°μ΄ν°λ₯Ό νμνλ ν΅μ¬μ μΈ μν μ νλ€.μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ κ³ λ €ν UIλ₯Ό ꡬμΆνλ €λ©΄ κ΄μ¬μ¬μ λΆλ¦¬, λ¨λ°©ν₯ λ°μ΄ν° νλ¦(UDF), μν κ΄λ¦¬ λ±μ μμΉμ λ°λ₯΄λ κ²μ΄ μ€μνλ€. 1. UI λ μ΄μ΄μ ν΅μ¬ κ΅¬μ± μμUI λ μ΄μ΄λ ν¬κ² λ κ°μ§ μμλ‘ κ΅¬μ±λλ€.UI μμ: View λλ Jetpack Composeλ₯Ό μ¬μ©ν΄ UIλ₯Ό ꡬμ±νλ€.μν νλ(State Holder): UI μνλ₯Ό κ΄λ¦¬νλ©°, UI μμμ λ°μ΄ν° μμ€λ₯Ό μ°κ²°νλ€. μΌλ°μ μΌλ‘ ViewModelμ΄ μ΄ μν μ μννλ€.π ν΅μ¬ κ°λ
: UI μμλ μνλ₯Ό νννλ μν λ§ λ΄λΉνκ³ , μν κ΄λ¦¬λ μν νλ(ViewModel)κ° μ±
μμ§λλ‘ λΆλ¦¬νλ κ²μ΄ μ€μνλ€. 2. λ¨λ°©ν₯..
λ¬Έμ λ°±μ€ 14501.ν΄μ¬ https://www.acmicpc.net/problem/14501 μ½λ (λ°ν
μ
DP)λ°ν
μ
λ°©μμμλ λ€μμλΆν° μ κ·Όνλ©° μ΅μ μ μλ΄ μ€μΌμ€μ κ²°μ νλ€.N = int(input())table = [list(map(int,input().split())) for _ in range(N)]dp = [0 for _ in range(N+1)]for i in range(N)[::-1]: if i + table[i][0] > N: dp[i] = dp[i+1] else: # iλ²μ§Έ λ λΆν° μ»μ μ μλ μ΅λ μ΄μ΅ dp[i] = max(dp[i + table[i][0]] + table[i][1], dp[i + 1])print(dp[0]) νμ΄ fo..
μλλ‘μ΄λ μ ν리μΌμ΄μ
μ κ°λ°ν λ, μ½λμ μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ λμ΄λ κ²μ΄ λ§€μ° μ€μνλ€. ꡬκΈμ μ΄λ₯Ό μν΄ μλλ‘μ΄λ μν€ν
μ²μ λν λ€μν κΆμ₯μ¬νμ μ 곡νκ³ μμΌλ©°, μ΄λ₯Ό λ°λ₯΄λ©΄ μ±μ νμ§κ³Ό κ²¬κ³ μ±μ ν₯μμν¬ μ μλ€. 1. μν€ν
μ² κΆμ₯μ¬νμ κ°μμλλ‘μ΄λ μν€ν
μ² κΆμ₯μ¬νμ μ격ν κ·μΉμ΄ μλλΌ μ±μ νμ§μ λμ΄λ λ° λμμ΄ λλ κ°μ΄λλΌμΈμ΄κΈ° λλ¬Έμ μ±μ μꡬμ¬νκ³Ό νμ κ°λ° νκ²½μ κ³ λ €νμ¬ μ΄λ₯Ό μ μ ν μ‘°μ ν μ μλ€.κΆμ₯μ¬νμ μ°μ μμμ λ°λΌ λ€μκ³Ό κ°μ΄ ꡬλΆλλ€.μ κ·Ή κΆμ₯λ¨: κΈ°λ³Έμ μΈ μμΉκ³Ό μΆ©λνμ§ μλ ν λ°λμ λ°λΌμΌ νλ κΆμ₯μ¬ν.κΆμ₯λ¨: μ±μ νμ§μ ν₯μμν€λ λ° ν° λμμ΄ λλ κΆμ₯μ¬ν.μ νμ¬ν: νΉμ μν©μμ μ μ©ν μ μλ κΆμ₯μ¬ν. 2. κ³μΈ΅νλ μν€ν
μ² μ μ©νκΈ°μλ..

μ’
μ νλͺ© μ½μ
(DI)μ΄λ?μ’
μ νλͺ© μ½μ
(Dependency Injection, DI)μ μννΈμ¨μ΄ κ°λ°μμ λ리 μ¬μ©λλ κ°λ
μΌλ‘, Android μ± κ°λ°μμλ μ€μν μν μ νλ€. DIλ₯Ό νμ©νλ©΄ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ , 리ν©ν°λ§μ μ©μ΄νκ² νλ©°, ν
μ€νΈλ₯Ό μ½κ² λ§λ€ μ μλ€. νΉν, Android μ± κ°λ°μμλ DIλ₯Ό μ¬λ°λ₯΄κ² νμ©νλ©΄ μ± μν€ν
μ²λ₯Ό λμ± νννκ² κ΅¬μΆν μ μλ€. μ’
μ νλͺ© μ½μ
μ νμμ±μΌλ°μ μΌλ‘ ν΄λμ€λ λ€λ₯Έ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό νμλ‘ νλ€. μλ₯Ό λ€μ΄, μλμ°¨(Car) ν΄λμ€κ° μμ§(Engine) ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό νμλ‘ νλ€κ³ κ°μ ν΄ λ³΄κ² λ€.1. μ’
μ νλͺ©μ μ§μ μμ±νλ κ²½μ° (DI λ―Έμ¬μ©)class Car { private val engine = Engine()..
Android μ ν리μΌμ΄μ
μ μ‘ν°λΉν°(Activity), μλΉμ€(Service), λΈλ‘λμΊμ€νΈ 리μλ²(Broadcast Receiver), μ½ν
μΈ νλ‘λ°μ΄λ(Content Provider)λΌλ λ€ κ°μ§ μ£Όμ μ»΄ν¬λνΈλ‘ ꡬμ±λλ€. μ΄ μ»΄ν¬λνΈλ€μ λͺ¨λ AndroidManifest.xml νμΌμ μ μΈν΄μΌ μμ€ν
μ΄ μΈμνκ³ μ€νν μ μλ€. 1. μ‘ν°λΉν°(Activity) μ μΈνκΈ°Activityλ μ¬μ©μ μΈν°νμ΄μ€(UI)λ₯Ό μ 곡νλ νλ©΄ λ¨μμ μ»΄ν¬λνΈμ΄λ€. μ΄λ₯Ό 맀λνμ€νΈμ λ±λ‘νμ§ μμΌλ©΄ μμ€ν
μμ μ€νν μ μλ€.μμ μ½λ μ£Όμ μμ±android:name : μ‘ν°..
μλλ‘μ΄λ 4λ μ»΄ν¬λνΈ κ°κ°μ μμ€ν
μ΄λ μ¬μ©μκ° μ±μ μ§μ
νλ μ§μ
μ μν μ νλ©°, νΉμ κΈ°λ₯μ λ΄λΉνλ€.μλλ‘μ΄λμμ μ 곡νλ μ£Όμ κ΅¬μ± μμλ λ€μκ³Ό κ°μ΄ λ€ κ°μ§λ‘ ꡬλΆλλ€.νλ(Activity) - μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ 곡νλ μμμλΉμ€(Service) - λ°±κ·ΈλΌμ΄λ μμ
μ μννλ μμλΈλ‘λμΊμ€νΈ 리μλ²(Broadcast Receiver) - μμ€ν
λ° μ±μ λΈλ‘λμΊμ€νΈ λ©μμ§λ₯Ό μ²λ¦¬νλ μμμ½ν
μΈ μ 곡μ(Content Provider) - λ°μ΄ν°λ₯Ό κ΄λ¦¬νκ³ κ³΅μ νλ μμ 1. νλ(Activity)νλ(Activity)λ μ¬μ©μκ° μ±κ³Ό μνΈμμ©ν μ μλ νλ©΄μ λνλΈλ€. κ° μ‘ν°λΉν°λ μ± λ΄μμ λ
립μ μΌλ‘ μ‘΄μ¬ν μ μμΌλ©°, λ€λ₯Έ μ‘ν°λΉν° λλ μ±μμ νΈμΆλ μλ μλ€.μ£Όμ νΉμ§μ¬μ©μ μΈ..
μλλ‘μ΄λ μ ν리μΌμ΄μ
κ°λ°μμ ν΄λμ€ κ°μ μ’
μμ±μ ν¨κ³Όμ μΌλ‘ κ΄λ¦¬νλ κ²μ μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ λμ΄λ λ° λ§€μ° μ€μνλ€. λ³Έ κΈμμλ μ’
μ νλͺ© κ΄λ¦¬μ κ°λ
κ³Ό DI(Dependency Injection) ν¨ν΄ μ μ© λ°©λ²μ μ΄ν΄λ³΄κ³ , Hiltλ₯Ό μ¬μ©νμ¬ μ΄λ₯Ό ꡬννλ λ°©λ²μ μ€λͺ
νλ€. μ’
μ νλͺ© κ΄λ¦¬λ?μ±μ ν΄λμ€λ€μ μνν λμμ μν΄ λ€λ₯Έ ν΄λμ€μ κΈ°λ₯μ νμλ‘ νλ€. μ΄λ¬ν μ’
μ νλͺ©μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νμ§ μμΌλ©΄ μ½λκ° λ³΅μ‘ν΄μ§κ³ μ μ§λ³΄μκ° μ΄λ €μμ§ μ μλ€. μ’
μ νλͺ©μ ν¨κ³Όμ μΌλ‘ μμ§νκ³ κ΄λ¦¬νλ λνμ μΈ λ°©λ²μΌλ‘λ λ€μ λ κ°μ§κ° μλ€.1. μ’
μ νλͺ© μ£Όμ
(Dependency Injection, DI)DIλ ν΄λμ€κ° μ§μ μ’
μ νλͺ©μ μμ±νλ κ²μ΄ μλλΌ μΈλΆμμ μ 곡λ°λ λ°©μμ΄λ€. μ¦, ..

λͺ¨λ°μΌ μ ν리μΌμ΄μ
μ κ°λ°ν λ μ¬λ°λ₯Έ μν€ν
μ²λ₯Ό μ μ©νλ©΄ μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ λμ΄κ³ , νμ κ° νμ
μ μννκ² νλ©°, μ¬μ©μ κ²½νμ ν₯μμν¬ μ μλ€. μ΄ κΈμμλ μλλ‘μ΄λ μ± μν€ν
μ²μ ν΅μ¬ μμΉκ³Ό κΆμ₯μ¬νμ λ€λ£¬λ€. λͺ¨λ°μΌ μ±μ νκ²½μλλ‘μ΄λ μ±μ Activity, Fragment, Service, Content Provider, Broadcast Receiver λ± μ¬λ¬ κ΅¬μ± μμλ‘ μ΄λ£¨μ΄μ Έ μμΌλ©°, μ΄μ체μ κ° μ΄λ€μ κ΄λ¦¬νλ€.νμ§λ§ λͺ¨λ°μΌ νκ²½μ 리μμ€κ° μ νμ μ΄λ©°, μ΄μ체μ κ° νμμ λ°λΌ μ±μ νλ‘μΈμ€λ₯Ό μ’
λ£ν μλ μλ€. λ°λΌμ μ±μ μ€κ³ν λλ κ΅¬μ± μμκ° κ°λ³μ μΌλ‘ μ€νλ μ μλλ‘ νκ³ , μλ‘ μ’
μλμ§ μλλ‘ ν΄μΌ νλ€. μν€ν
μ²μ μ΄μ μ μ§λ³΄μμ± μ¦κ° β μ½λμ κ΅¬μ‘°κ° λͺ
ννμ¬ μμ ..
1. Fragment Managerλ₯Ό μ¬μ©ν λ°μ΄ν° μ λ¬FragmentManagerλ₯Ό μ¬μ©νμ¬ setFragmentResult()μ setFragmentResultListener()λ₯Ό νμ©νλ©΄ νλκ·Έλ¨ΌνΈ κ° λ°μ΄ν°λ₯Ό μ½κ² μ£Όκ³ λ°μ μ μλ€.ꡬν νλ¦λ°μ΄ν°λ₯Ό μ λ¬ν νλκ·Έλ¨ΌνΈμμ setFragmentResult() νΈμΆλ°μ΄ν°λ₯Ό λ°μ νλκ·Έλ¨ΌνΈμμ setFragmentResultListener()λ₯Ό λ±λ‘νμ¬ κ²°κ³Ό μμ μμ μ½λSenderFragment (λ°μ΄ν° μ μ‘)class SenderFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(v..