-
μκ³ λ¦¬μ¦μ μ€ν μκ° λ° κΈ°ν μμμ μ¬μ©λμ λΆμ
- κΈ°ν μμ : λ©λͺ¨λ¦¬, μ μ₯μ₯μΉ, ν΅μ λ±
-
μ€ν μκ°μ λΆμμ μ§μ€ν΄μΌ λλ μ΄μ
- μκ³ λ¦¬μ¦μ μ€ν μκ°μ λ°λ₯Έ λΆλ₯
- 첫λ²μ§Έ : μ
λ ₯κ°μ ν¬κΈ°μ λ°λ₯Έ μκ³ λ¦¬μ¦μ
μ€ν μκ°
- λλ²μ§Έ : μ
λ ₯κ°μ ν¬κΈ°μ λ°λ₯Έ μκ³ λ¦¬μ¦μ
μ€ν μκ°μ μ±μ₯λ₯
- 첫λ²μ§Έ : μ
λ ₯κ°μ ν¬κΈ°μ λ°λ₯Έ μκ³ λ¦¬μ¦μ
- μ κ·Όμ νκΈ°λ²(asymptotic notation)
- λ°μ΄ν°μ κ°μ n β β μΌ λ μνμκ°μ΄ μ¦κ°νλ growth rateλ‘ μκ°λ³΅μ‘λλ₯Ό νννλ κΈ°λ²
- μ κ·Όμ νκΈ°λ² : μμ κ³μμ μ€μνμ§ μμ νλͺ©μ μ κ±°ν κ²
μ€μνμ§ μμ ν
κ³Όμμ κ³μ
λ₯Ό μ κ±°νλ©΄ μ΄ν΄λ₯Ό λ°©ν΄νλ λΆνμν λΆλΆμ΄ μμ΄μ Έμ μκ³ λ¦¬μ¦μ μ€ν μκ°μμ μ€μν λΆλΆμΈ μ±μ₯λ₯ μ μ§μ€ν μ μμ
- μ κ·Όμ νκΈ°λ²μ μ’
λ₯
- Big-Ξ(λΉ μΈν) νκΈ°λ² : μ€ν μκ°μ λν΄ μ κ·Όμ μΌλ‘ κ·Όμ ν νκ³κ°μ΄ μ‘΄μ¬νλ νκΈ°λ²
- Big-Ξ(λΉ μ€) νκΈ°λ² : μ κ·Όμ μνμ λ§ μ 곡νκ³ μ κ·Όμ μΌλ‘ κ·Όμ ν νκ³λ₯Ό μ£Όμ§ μλ νκΈ°λ²
- Big-Ξ©(λΉ μ€λ©κ°) νκΈ°λ² : μ΅μνμ ννμ ν΄μΌν λ, μνμ μμ΄ μ κ·Όμ ννμ λ§ μ‘΄μ¬νλ νκΈ°λ²
- μ μΌν λΆμλ²λ μλκ³ κ°μ₯ μ’μ λΆμλ²λ μλ
- λ€λ§ μλμ μΌλ‘ κ°μ₯ κ°λ¨νλ©° μκ³ λ¦¬μ¦μ μ€ννκ²½μ λΉμμ‘΄μ μ
- κ·Έλμ κ°μ₯ κ΄λ²μνκ² μ¬μ©λ¨
-
Big-Oλ μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ λνλ΄λ λμ€μ μΈ μ§ν
- κ°μ ν μκ³ λ¦¬μ¦μ΄ λΉ¨λΌμ‘λμ§, λ©λͺ¨λ¦¬λ₯Ό λ§μ΄ μ¬μ©νμ§ μλμ§ λ±μ μκ³ λ¦¬μ¦μ μ±λ₯μ νλ¨
-
μκ°μ λν
μκ°λ³΅μ‘λ
μ 곡κ°μ λν곡κ°λ³΅μ‘λ
κ° μ‘΄μ¬
- μκ° λ³΅μ‘λ : μκ³ λ¦¬μ¦μ μν μκ°μ΄ μΌλ§μΈμ§λ₯Ό λνλ
- μνλλ μ°μ°μ μλ₯Ό κ°μ§κ³ κ³μ°νλ©° μκ³ λ¦¬μ¦μμ μ€μνμ§ μλ κ°λ€μ μ΅λν 무μ
- μκ³ λ¦¬μ¦ μ€ν μκ°μ μ€ν νκ²½μ λ°λΌ λ¬λΌμ§λ―λ‘ μ€ν μκ°μ΄ μλ
μ°μ°μ μ€ν νμλ₯Ό μΉ΄μ΄νΈ
- μνλλ μ°μ°μ΄λ λκ° μ°μ , λΉκ΅, λμ
λ±μ λ§ν¨
- μ°μ°μ΄ λ§μ΄ μ‘΄μ¬νλλΌλ νλλ‘ μ·¨κΈνμ¬ Big-Oκ°μ ꡬν μλ μμ
- μ
λ ₯ κ°(N)μ λ°λΌμ μ€μ μμλλ μκ°μ΄ Big-Oμ μν κ²°κ³Όμ λ€λ₯Ό μλ μμ
- μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ λ°μ΄ν°μ μ λ ₯ κ°μ΄ μΌλ§λ ν¬λμ μν₯μ λ°μΌλ―λ‘ μ¬μν λΆλΆμ 무μ κ°λ₯
- μ΅μ μ κ²½μ° μκ°λ³΅μ‘λ (worst case)
- νκ· μκ°λ³΅μ‘λ (average case)
-
무μνλ νλͺ©
μμν 무μ μν₯λ ₯ μλ ν 무μ O(2N) β O(N) O(NΒ² + N) β O(NΒ²) O(NΒ² + 2) β O(NΒ²) O(NΒ²) μ΄ κ°μ₯ μ§λ°°μ μ΄λ―λ‘ μν₯λ ₯μ΄ μλ λ€λ₯Έ νλ€μ 무μ
- Big-Oμμ μμ£Ό μ¬μ©λλ 볡μ‘λ
O(1)
< O(log n)
< O(n)
< O(n log n)
< O(nΒ²)
< O(2βΏ)
< O(n!)
< O(nβΏ)
- νμ N λ³μ νλλ§ μ¬μ©λλ κ²μ μλ
μ λ ₯ κ° Nμ λν΄ NΒ²μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νκ³ κ°κ°μ μκ° λ³΅μ‘λλ₯Ό λΉκ΅ν΄λ³΄μ.
-
첫λ²μ§Έ
int sum1(int N){ return N*N; } // 1. κ³±μ μ°μ° 1κ°μ΄λ―λ‘ Big-O νκΈ°λ² O(1) μ΄ λ¨
-
λλ²μ§Έ
int sum2(int N){ sum = 0; for (int i=1; i<=N; i++) { sum = sum + N; } return sum; } // 1. λ§μ μ°μ° 1κ°μ λμ μ°μ° 1κ°κ° Nλ§νΌ μ€ν // 2. 2Nμ μκ°μ΄ 걸리μ§λ§ Big-O νκΈ°λ²μΌλ‘λ μμνμ 무μνμ¬ O(N) μ΄ λ© // 3. sum = 0; λν λμ μ°μ°μ΄μ§λ§ μμ κ° 1 μ΄λ―λ‘ λ¬΄μ
-
μΈλ²μ§Έ
int sum3(int N){ sum = 0; for (int i=1; i<=N; i++) { for (int j=1; j<=N; j++) { sum = sum + 1; } } return sum; } // 1. λ§μ μ°μ°, λμ μ°μ° μ΄ κ°κ° NxNλ² μ€ν // 2. μ΄ 2NΒ²μ μκ°μ΄ 걸리μ§λ§ Big-O νκΈ°λ²μΌλ‘λ μμνμ 무μνμ¬ O(NΒ²) μ΄ λ© // 3. sum = 0; λν λμ μ°μ°μ΄μ§λ§ μμ κ° 1 μ΄λ―λ‘ λ¬΄μ
- 곡κ°λ³΅μ‘λ : μκ³ λ¦¬μ¦μ΄ 곡κ°μ μΌλ§λ νμλ‘ νλμ§λ₯Ό λνλ
- μκ°λ³΅μ‘λ λ³΄λ€ λ μ€μνκ² μ·¨κΈλμ§λ§ μ κ²½μ μ¨μΌ ν¨
- ν¬κΈ°κ° NμΈ λ°°μ΄μ μμ±νλ©΄ κ³΅κ° λ³΅μ‘λλ O(N), NxN λ°°μ΄μ μμ±νλ©΄ O(NΒ²) μ΄ λ¨
- ν¨μμ μ¬κ·μ μΈ νΈμΆμ κ²½μ° μ€ν 곡κ°λ κ³ λ €
1λΆν° NκΉμ§μ ν©μ ꡬνλ νλ‘κ·Έλ¨μ μ¬κ· μκ³ λ¦¬μ¦μΌλ‘ μμ±ν΄λ³΄μ.
-
첫λ²μ§Έ
int sum(int N){ sum = 0; if(N<1) return 0; return N + sum(N-1); } // 1. N = 5 μΌ κ²½μ° μ€νμ μμ΄λ μ΅λ λ©λͺ¨λ¦¬λ sum(1) + sum(2) + β¦ + sum(5) // 2. λ°λΌμ 곡κ°λ³΅μ‘λλ‘ λνλ΄λ©΄ O(N) μ΄ λ¨ // +. Nλ² νΈμΆνλ€κ³ ν΄μ κ³΅κ° λ³΅μ‘λκ° νμ O(N)μ΄ λλ κ²μ μλ, μλ μμ νμΈ
-
λλ²μ§Έ
int mainSum(int N){ int result = 0; for(int i=0; i<N; i++) result += sum(i, i+1); return result; } int sum(int a, int b){ return a + b; } // 1. mainSum() ν¨μμμ sum() λ₯Ό Nλ² νΈμΆ // 2. νμ§λ§ μ€νμ μμ΄λ μ΅λ 곡κ°μ mainSum() + sum(), 2 μ // 3. λ°λΌμ 곡κ°λ³΅μ‘λλ‘ λνλ΄λ©΄ O(1) μ΄ λ¨
-
μ ν μκ°λ³΅μ‘λλ₯Ό κ°μ§λ€κ³ λ§νκ³ O(n)μ΄λΌκ³ νκΈ°νλ€.
int sum(int[] A) { int n = 0; int result = 0; for (int i = 0; i < A.length; i++){ result += A[i]; n+=1; } return result; }
κ°μ₯ μμ£Ό μ€νλλ λ¬Έμ₯ μ€ νλμ΄λ©° μ€ν νμλ νμ nλ²μ΄λ€. κ°μ₯ μμ£Ό μ€νλλ λ¬Έμ₯μ΄ nλ²μ΄λΌλ©΄ λͺ¨λ λ¬Έμ₯μ μ€ν νμμ ν©μ nμ μ νμ μΌλ‘ λΉλ‘νλ©°, λͺ¨λ μ°μ°λ€μ μ€ννμμ ν©λ μμ nμ μ νμ μΌλ‘ λΉλ‘νλ€.
int search(int[] A, int target) { for (int i = 0; i < A.length; i++) { if (A[i] == target) return i; } return -1; }
κ°μ₯ μμ£Ό μ€νλλ λ¬Έμ₯ μ€ νλμ΄λ©°, μ€ν νμλ μ΅μ μ κ²½μ° nλ²μ΄λ€. μ΅μ μ κ²½μ° μκ°λ³΅μ‘λλ O(n)μ΄λ€.
boolean isDistinct(int[] A) { for (int i = 0; i < A.length; i++) { for (int j = 0; i + 1 < A.length; j++) { if (A[i] == A[j]) return false; } } return true; }
μ΅μ μ κ²½μ° λ°°μ΄μ μ μ₯λ λͺ¨λ μμ μλ€μ λΉκ΅νλ―λ‘ λΉκ΅ μ°μ°μ νμλ n(n-1)/2μ΄λ€. λ°λΌμ μκ°λ³΅μ‘λλ O(n2)μ΄λ€
int binarySearch(int n, int[] data, int target) { int begin = 0; int end = n - 1; while (begin <= end) { int middle = (begin + end) / 2; if (data[middle] == target) return middle; else if (data[middle] < target) begin = middle + 1; else end = middle - 1; } return - 1; }
μ μκ³ λ¦¬μ¦μ μκ°λ³΅μ‘λλ?
νμ€μ νλ‘κ·Έλλ°μ μΌλ‘ νννλ κ² / ν° λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬νλ κ²
- μ± μ΄ νκΆμ΄λ©΄ μ무λ κ² λμ Έλλ μ°Ύλλ° λ¬Έμ κ° μμΌλ 100κΆ, 200κΆμ© κ·Έ μκ° λ§μμ§λ©΄ μ 리λ₯Ό νμ§ μλ ν μνλ μ± μ μ°ΎκΈ° μ΄λ ΅λ€. μ 리λ₯Ό ν΅ν΄ 곡κ°μ μ μ½νκ³ μκ°μ μ μ½νλ ν¨κ³Όλ₯Ό λλ¦°λ€.
μ 리μ λμ μ§ν : μ’ μ΄ β μ± β μ± μ₯ β λμκ΄ β WWW(μΈν°λ· λλ λ€νΈμν¬)
- μ»΄ν¨ν°μμ μ€μν κ² :
MEMORY
,CPU
,STORAGE
- MEMORY : κ°κ²©μ΄ λΉμΈκ³ μ©λμ΄ μ μΌλ©° μ μμ λλ©΄ λ°μ΄ν°λ μμ€λμ§λ§ STORAGE λ³΄λ€ μλ±ν λΉ λ₯΄κ² λ°μ΄ν°λ₯Ό κ°μ Έμ¬ μ μλ€.
- STORAGE : HDD/SDD λ‘ μ μ₯μ₯μΉμ΄λ€. κ°κ²©μ΄ μ λ ΄νκ³ μ©λμ΄ ν¬λ©° μ μμ΄ κΊΌμ Έλ λ°μ΄ν°κ° μ μ₯λλ€.
- CPU : μ²λ¦¬ μλ μ°¨μ΄κ° λ무 μ¬ν΄ μ€ν 리μ§μ 곧λ°λ‘ μμΈμ€ νμ§ μλλ€. μ»΄ν¨ν°κ° λμνλ λ° νμν λͺ¨λ κ³μ°μ μ²λ¦¬νλ€.
- μ²λ¦¬ μμ
- λ©λͺ¨λ¦¬κ° μ€ν 리μ§μμ λ°μ΄ν°λ₯Ό κ°μ Έμ¨λ€.
- CPUκ° λ©λͺ¨λ¦¬μ λ΄κΈ΄ λ°μ΄ν°λ₯Ό μ½λλ€.
- μλ£κ΅¬μ‘°μ μμ΄ κ°μ₯ μ€μν κ²μ
λ©λͺ¨λ¦¬
μ΄λ€.- μλ£κ΅¬μ‘°μ λ―Έμ : λ©λͺ¨λ¦¬λ₯Ό μ΄λ»κ² ν¨μ¨μ μΌλ‘ μ¬μ©νλλ?
- λ©λͺ¨λ¦¬λ λΉλ©κ³Ό κ°λ€. μ¬λ¬ λ΄λΆ μ μ₯μμ λ°μ΄ν°λ₯Ό λ£κ³ , ν΄λΉ μ£Όμλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ μλκ° λͺ¨λ μ£Όμλ€μ΄ λμΌνλ€.
- μλ£ κ° μ°κ²° νν / λͺ¨μμ λ°λ₯Έ ꡬλΆ
-
μ ν μλ£κ΅¬μ‘° (Linear, μ ν 1:1 μ°κ²° νν)
- ν μμ λ€μ νλμ μμ λ§μ΄ μ‘΄μ¬ > μλ£λ€μ΄ μ§μ ννλ‘ λμ΄λμ΄ μλ κ΅¬μ‘°λ‘ μμλ€ κ° μμ κ³ λ € > μ ν/μΈμ /μ ν μμλ€ κ°μ 1:1 κ΄κ³λ‘ λμ΄ - μ ν μλ£κ΅¬μ‘°μ μ > κΈ°λ³Έ μ ν μλ£κ΅¬μ‘° : 리μ€νΈ, μ°κ²° 리μ€νΈ, λ°°μ΄, λ μ½λ λ± >> μλ£μ μ½μ λ° μμ κ° μ΄λ μμΉμμλ μ΄λ£¨μ΄μ§ > μ ν μ ν μλ£κ΅¬μ‘° : μ€ν, ν, λ°ν¬(μ€νκ³Ό νκ° νΌν©λ νν) λ± >> μλ£μ μ½μ λ° μμ κ° μ ν΄μ§ μμΉμμλ§ μ΄λ£¨μ΄μ§
-
λΉμ ν μλ£κ΅¬μ‘° (Nonlinear, μ ν ε€:ε€ μ°κ²° νν)
- ν μμ λ€μ μ¬λ¬κ°μ μμλ€μ΄ μ‘΄μ¬ν μ μμ > μΈμ (μ ν) μμλ€ κ°μ ε€:ε€ κ΄κ³λ‘ λ°°μΉλ¨ > κ³μΈ΅μ ꡬ쑰(Hierarchical Structure)λ₯Ό λνλ΄κΈ°μ μ μ > κ°κ³λμμμ μ‘°μ-μμ κ°μ κ΄κ³, μ§μ₯ μμ¬-λΆν κ°μ κ΄κ³, μ»΄ν¨ν° ν΄λ ꡬ쑰 λ± - λΉμ ν μλ£κ΅¬μ‘°μ μ > νΈλ¦¬, κ·Έλν λ±
-
- μλ£ κ° μ°μ, μ°κ²° ꡬ쑰μ λ°λ₯Έ ꡬλΆ
- λ°°μ΄μ κΈ°λ°ν μ°μ λ°©μ ꡬ쑰 (Continuation) : 리μ€νΈ λ±
- ν¬μΈν° κΈ°λ°μ μ°κ²° λ°©μ ꡬ쑰 (Link) : μ°κ²° 리μ€νΈ λ±
- λ°μ΄ν° λ° μ°μ°μ λ€λ£¨λ κ΄μ
- μλ£ν(Data Type) : λ°μ΄ν° μ€μ¬μΌλ‘λ§ κ³ λ €
- μλ£(λ³μ)κ° κ°λ κ°μ μ’ λ₯λ₯Ό νν
- μ°μ°μ κ·Έ μλ£νμ λ§λλ‘, λ³λ/λΆκ°μ /λΆμ°¨μ μΌλ‘ μνλλ κ΄μ
- μΆμ μλ£ν(Abstract Data Type) : λ°μ΄ν°μ μ°μ°μ ν¨κ» κ³ λ €
μλ£
λ°μ°μ°
μ λͺ¨λ νλλ‘ λ¬Άμ΄ νλμ λ¨μλ‘ νν- μλ£ μ μ₯ λ° μ²λ¦¬ 보λ€λ λ¬Έμ ν΄κ²° μ§ν₯μ μΈ μλ£ν
- μΆμμ μλ£κ΅¬μ‘°(Abstract Data Structure) : ꡬν λ°©λ²μ λͺ μνμ§ μμ > 리μ€νΈ >> μ°κ²° 리μ€νΈ (Linked List) > μ€ν (Stack) > ν (Queue) > νΈλ¦¬ (Tree) >> νΈλΌμ΄ (Trie) > κ·Έλν (Graph) > λμ λ리 μλ£κ΅¬μ‘° (Dictionaries) >> μ°κ΄ λ°°μ΄ (Associative array.) Mapμ΄λΌκ³ μΉνκΈ°λ νλ€. >> μ°κ΄ 리μ€νΈ >> ν΄μ ν μ΄λΈ
- μλ£ν(Data Type) : λ°μ΄ν° μ€μ¬μΌλ‘λ§ κ³ λ €
- λ°μ΄ν°μ νν/ꡬν/μ€κ³ κ΄μ
- μ¬μ μ μν(νλ‘κ·Έλλ° μΈμ΄μμ κΈ°λ³Έ λ΄μ₯ μ 곡)
- μ¬μ©μ μ μν(νλ‘κ·Έλλ¨Έκ° μμ©μ λ°λΌ μ§μ ꡬν)
-
β (νμ) List : λͺ¨λ κ³³
-
Set : μ§ν©, κ΅μ§ν© / ν©μ§ν© / μ°¨μ§ν© λ±
-
β (νμ) Tree : μ‘°μ§λ, λλ ν 리 λ±
-
Graph : μ§λ μ΄ν리μΌμ΄μ λ±, μ΅λ¨κ±°λ¦¬ μ΄λ
-
1λ² - μ½λ©μΈν°λ·°
- "μ€λ³΅μ΄ μλκ°" * > λ¬Έμμ΄μ΄ μ£Όμ΄μ‘μ λ, μ΄ λ¬Έμμ΄μ κ°μ λ¬Έμκ° μ€λ³΅λμ΄ λ±μ₯νλμ§ νμΈνλ μκ³ λ¦¬μ¦μ μμ±νλΌ. * > μλ£κ΅¬μ‘°λ₯Ό μΆκ°λ‘ μ¬μ©νμ§ μκ³ ν μ μλ μκ³ λ¦¬μ¦ λν κ³ λ―ΌνλΌ.
public boolean solution1(String str) { if (str.length() > 128) return false; boolean[] char_set = new boolean[128]; for (int i = 0; i < str.length(); i++) { int val = str.charAt(i); if (char_set[val]) return false; char_set[val] = true; } return true; }
-
2λ² - μ½λ©μΈν°λ·°
- "URIλ³ν" * λ¬Έμμ΄μ λ€μ΄ μλ λͺ¨λ 곡백μ '%20'μΌλ‘ λ°κΏ μ£Όλ λ©μλλ₯Ό μμ±νλΌ. * μ΅μ’ μ μΌλ‘ λͺ¨λ λ¬Έμλ₯Ό λ€ λ΄μ μ μμ λ§νΌ μΆ©λΆν 곡κ°μ΄ μ΄λ―Έ ν보λμ΄ μλ€. * λ¬Έμμ΄μ μ΅μ’ κΈΈμ΄κ° ν¨κ» μ£Όμ΄μ§λ€κ³ κ°μ ν΄λ λλ€. * (μλ°λ‘ ꡬννλ€λ©΄ λ°°μ΄ μμμ μμ ν μ μλλ‘ λ¬Έμ λ°°μ΄(character array)λ₯Ό μ΄μ©νκΈΈ λ°λλ€)
public char[] solution2(String str, int trueLength) { int spaceCount = 0, index, i = 0; char[] cstr = str.toCharArray(); for (i = 0; i < trueLength; i++) { if (cstr[i] == ' ') spaceCount++; } index = trueLength + spaceCount * 2; char[] array = Arrays.copyOf(cstr, index); if (trueLength < cstr.length) array[trueLength] = '\0'; // λ°°μ΄μ λ for (i = trueLength - 1; i >= 0; i--) { if (array[i] == ' ') { array[index - 1] = '0'; array[index - 2] = '2'; array[index - 3] = '%'; index = index - 3; } else { array[index - 1] = array[i]; index--; } } return array; }
-
λ°°μ΄ arrayμ iλ²μ§Έ μ«μλΆν° jλ²μ§Έ μ«μκΉμ§ μλ₯΄κ³ μ λ ¬νμ λ, kλ²μ§Έμ μλ μλ₯Ό ꡬνλ € ν©λλ€. μλ₯Ό λ€μ΄ arrayκ° [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3μ΄λΌλ©΄ arrayμ 2λ²μ§ΈλΆν° 5λ²μ§ΈκΉμ§ μλ₯΄λ©΄ [5, 2, 6, 3]μ λλ€. 1μμ λμ¨ λ°°μ΄μ μ λ ¬νλ©΄ [2, 3, 5, 6]μ λλ€. 2μμ λμ¨ λ°°μ΄μ 3λ²μ§Έ μ«μλ 5μ λλ€. λ°°μ΄ array, [i, j, k]λ₯Ό μμλ‘ κ°μ§ 2μ°¨μ λ°°μ΄ commandsκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, commandsμ λͺ¨λ μμμ λν΄ μμ μ€λͺ ν μ°μ°μ μ μ©νμ λ λμ¨ κ²°κ³Όλ₯Ό λ°°μ΄μ λ΄μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ. [μ νμ¬ν] arrayμ κΈΈμ΄λ 1 μ΄μ 100 μ΄νμ λλ€. arrayμ κ° μμλ 1 μ΄μ 100 μ΄νμ λλ€. commandsμ κΈΈμ΄λ 1 μ΄μ 50 μ΄νμ λλ€. commandsμ κ° μμλ κΈΈμ΄κ° 3μ λλ€.
public int[] solution3(int[] array, int[][] commands) { int[] answer = new int[commands.length]; List<Integer> list = new ArrayList<>(); for(int i = 0 ; i < commands.length; i++){ System.out.println("μμ"); for(int j = commands[i][0]; j <= commands[i][1]; j++){ if(commands[i][0] == commands[i][1]){ list.add(array[j-1]); break; } list.add(array[j-1]); } Collections.sort(list); answer[i] = list.get((commands[i][2])-1); list.clear(); } return answer; }
-
λνμ΄λ λ무 μ‘°κ°μ 5κ° κ°μ§κ³ μλ€. λ무 μ‘°κ°μλ 1λΆν° 5κΉμ§ μ«μ μ€ νλκ° μ°μ¬μ Έ μλ€. λ, λͺ¨λ μ«μλ λ€μ― μ‘°κ° μ€ νλμλ§ μ°μ¬ μλ€. λνμ΄λ λ무 μ‘°κ°μ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μ³μ 1, 2, 3, 4, 5 μμλ‘ λ§λ€λ €κ³ νλ€. 첫 λ²μ§Έ μ‘°κ°μ μκ° λ λ²μ§Έ μλ³΄λ€ ν¬λ€λ©΄, λμ μμΉλ₯Ό μλ‘ λ°κΎΌλ€. λ λ²μ§Έ μ‘°κ°μ μκ° μΈ λ²μ§Έ μλ³΄λ€ ν¬λ€λ©΄, λμ μμΉλ₯Ό μλ‘ λ°κΎΌλ€. μΈ λ²μ§Έ μ‘°κ°μ μκ° λ€ λ²μ§Έ μλ³΄λ€ ν¬λ€λ©΄, λμ μμΉλ₯Ό μλ‘ λ°κΎΌλ€. λ€ λ²μ§Έ μ‘°κ°μ μκ° λ€μ― λ²μ§Έ μλ³΄λ€ ν¬λ€λ©΄, λμ μμΉλ₯Ό μλ‘ λ°κΎΌλ€. λ§μ½ μμκ° 1, 2, 3, 4, 5 μμκ° μλλΌλ©΄ 1 λ¨κ³λ‘ λ€μ κ°λ€. μ²μ μ‘°κ°μ μμκ° μ£Όμ΄μ‘μ λ, μμΉλ₯Ό λ°κΏ λ λ§λ€ μ‘°κ°μ μμλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
public void solution4(int[] n) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // or Scanner sc = new Scanner(System.in); String[] nums; // or String[] nums2; nums = br.readLine().split(" "); // or nums2 = sc.nextLine().split(" "); for (int i = 0; i < n.length; i++) n[i] = Integer.parseInt(nums[i]); // or n[i] = Integer.parseInt(nums2[i]); int tmp = 0; for (int i = 0; i < n.length - 1; i++) { for (int j = 0; j < n.length - 1; j++) { if (n[j] > n[j + 1]) { tmp = n[j]; n[j] = n[j + 1]; n[j + 1] = tmp; for (int p : n) System.out.print(p + " "); System.out.println(); } } } }