Hello, λ‚˜λ‚˜'s world !

μ‹œκ°„λ³΅μž‘λ„ λ³Έλ¬Έ

πŸ’‘ μ•Œκ³ λ¦¬μ¦˜

μ‹œκ°„λ³΅μž‘λ„

Nana0 2021. 1. 7. 11:06
  1. μ‹œκ°„λ³΅μž‘λ„

  2. κ³΅κ°„λ³΅μž‘λ„

  3. μž…μΆœλ ₯

 

μš°λ¦¬λŠ” ν•œμ •λœ μžμ›μ„ κ°–κ³ μžˆλ‹€. μžμ›μ„ 효율적으둜 μ‚¬μš©ν•˜λ €λ©΄ μ‹œκ°„λ³΅μž‘λ„κ°€ ꡉμž₯히 μ€‘μš”ν•˜λ‹€.

λ©”λͺ¨λ¦¬κ°€ 64GB ν•„μš”ν•œ μž‘μ—…μ΄λ©΄ κ΅¬λ§€ν•˜λ©΄λœλ‹€. ν•˜μ§€λ§Œ ꡬ맀해도 10μΌκ±Έλ¦¬λŠ” μž‘μ—…μ΄λΌλ©΄ 10일이 μ†Œμš”λœλ‹€.

μ‹œκ°„λ³΅μž‘λ„ > κ³΅κ°„λ³΅μž‘λ„     μ€‘μš”ν•˜λ‹€.   

 

 

1. μ‹œκ°„λ³΅μž‘λ„

  •  Big Oν‘œκΈ°λ²•μœΌλ‘œ ν‘œκΈ°.                     ex) O(1), O(N), O(N^3)......

  • μ½”λ“œλ₯Ό 보기전 μ‹œκ°„λ³΅μž‘λ„λ₯Ό 보고 μˆ˜ν–‰μ‹œκ°„μ„ κ³„μ‚°ν•œν›„ μ œν•œμ‹œκ°„μ•ˆμ— κ°€λŠ₯μ‹œ κ΅¬ν˜„

  • μ΅œμ•…μ˜ 경우 κ±Έλ¦¬λŠ” μ‹œκ°„μ„ λ‚˜νƒ€λƒ„

  • 1μ–΅ = 1초  (μ‹€μ œλ‘œλŠ” 5얡정도)            ex) O(N^3) = 1.25μ–΅  κ°€λŠ₯  -> O(1), O(N), O(N^2), O(N^3)

  • μƒμˆ˜λŠ” 버린닀. (ν°μˆ˜λ“€μ΄κΈ° λ•Œλ¬Έμ— μƒμˆ˜λŠ” 별 μ˜λ―Έμ—†μŒ)     ex) O(3N) = O(N),   O(5) = O(1), 

  • λ‘κ°€μ§€ν•­μΌλ•Œ λ³€μˆ˜κ°€ κ°™μœΌλ©΄ 버린닀.                              ex) O(N^2+N) = O(N^2)

  • μ„œλ‘œλ‹€λ₯Έ λ³€μˆ˜μ΄λ©΄ λƒ…λ‘”λ‹€ (무엇이 큰지 λͺ¨λ₯΄κΈ° λ•Œλ¬Έ)         ex) O(N+M)

 

λ‹€μŒμ€ μ½”λ“œλ₯Ό 톡해 μ‹œκ°„λ³΅μž‘λ„λ₯Ό 비ꡐ해보겠닀.

int sum = 0;
for(int i=1; i<=N; i++)
    sum += i;
    
-----------------------------------------

int sum = (N+1)*N/2;

 

첫번째 μ½”λ“œλŠ” sum=0이 ν•œ 번, int i=1이 ν•œ 번, i++이 N번, sum+=iκ°€ N번 ν•©μ³μ„œ 총 2N+2 번의 연산이 μˆ˜ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Big-O ν‘œκΈ°λ²•μœΌλ‘œ ν‘œν˜„ν•˜λ©΄ 2N+2 = O(N) μ΄λ―€λ‘œ, 첫번째 μ½”λ“œμ˜ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(N) μž…λ‹ˆλ‹€.

 

λ‘λ²ˆμ§Έ μ½”λ“œλŠ” (N+1)이 ν•œ 번, *N이 ν•œ 번, /2κ°€ ν•œ 번, λŒ€μž… 연산이 ν•œ 번 ν•©μ³μ„œ 총 4번의 연산이 μˆ˜ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Big-O ν‘œκΈ°λ²•μœΌλ‘œ ν‘œν˜„ν•˜λ©΄ 4 = O(1) μ΄λ―€λ‘œ, λ‘λ²ˆμ§Έ μ½”λ“œμ˜ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(1) μž…λ‹ˆλ‹€.

 

μ‹œκ°„λ³΅μž‘λ„κ°€ O(N) > O(1) μ΄λ―€λ‘œ, λ‘λ²ˆμ§Έ μ½”λ“œκ°€ 첫번째 μ½”λ“œλ³΄λ‹€ μ‹œκ°„μ μΈ μΈ‘λ©΄μ—μ„œ νš¨μœ¨μ μž…λ‹ˆλ‹€.

 

 

2. κ³΅κ°„λ³΅μž‘λ„

  • 보톡 λ©”λͺ¨λ¦¬λŠ” λ„‰λ„‰ν•˜κΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬μ œν•œμ— λŒ€ν•œ κ±±μ •λ³΄λ‹€λŠ”, λŒ€λž΅μ μœΌλ‘œ 곡간을 μ–Όλ§ˆλ‚˜ μ‚¬μš©ν• μ§€ μ˜ˆμƒν• κ²ƒ.

  • 곡간을 κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ”κ²ƒμ„ ν™œμš© = λ°°μ—΄ ν™œμš©   (배열크기xμžλ£Œν˜•ν¬κΈ°)

  • 1초 = 381.469MB      (int a[10000][10000] 보톡 1초 = 381MB)

   

 

3. μž…μΆœλ ₯

  • μž…λ ₯ 

        :  Scanner, BufferedReader  

        ->  μž…λ ₯이 λ§Žμ„κ²½μš° BufferedReader μ‚¬μš©. (κ΅¬ν˜„ν•˜λŠ”κ²ƒμ΄ λ³΅μž‘ν•˜λ‚˜ μ• μ΄ˆλΆ€ν„° μ΄κ²ƒλ§Œμ¨λ„ μƒκ΄€μ—†μŒ)

 

        ex) Scanner sc = new Scanner(System.in);

            BufferedReader  br = new BufferedReader(new InputStreamReader(System.in));

 

ν•¨μˆ˜λ³„ 10,000,000개의 숫자λ₯Ό μž…λ ₯받을 λ•Œ λŒ€λž΅μ μΈ μˆ˜ν–‰ μ‹œκ°„

  • 좜λ ₯

         :  System.out, StringBuilder, BufferedWriter

 

                            λΉ λ₯΄κΈ° 비ꡐ

        BufferedWriter  >  StringBuilder  >  System.out

 

 

 


       

<μ°Έκ³ >

λ°±μ€€ μ‚¬μ΄νŠΈ

cupjoo.tistory.com/97

barefoot-coder.tistory.com/9

medium.com/humanscape-tech/%EC%BD%94%EB%93%9C%EC%9D%98-%EC%8B%9C%EA%B0%84-%EB%B3%B5%EC%9E%A1%EB%8F%84-%EA%B3%84%EC%82%B0%ED%95%98%EA%B8%B0-b67dd8625966

'πŸ’‘ μ•Œκ³ λ¦¬μ¦˜' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€λ•Œ 쒋은글  (0) 2021.01.22
큐(Queue) / 덱(Deque)  (0) 2021.01.08
μŠ€νƒ(Stack)  (0) 2021.01.08
Comments