πŸ“ Coding Test Study/Math

Big-O ν‘œκΈ°λ²•

ibelieveinme 2021. 4. 25. 17:40
728x90

보톡 1μ–΅ 번의 연산을 ν•˜λŠ” 데에 1μ΄ˆκ°€ κ±Έλ¦°λ‹€.

λ¬Έμ œμ—μ„œ μ œν•œμ‹œκ°„μ΄ 1초둜 μ£Όμ–΄μ‘Œμ„ λ•Œ, μ΅œλŒ€ μ—°μ‚° νšŸμˆ˜κ°€ 1μ–΅ λ²ˆμ„ λ„˜μ§€ μ•ŠλŠ”μ§€ 확인해야 ν•œλ‹€.


1. Big-O ν‘œκΈ°λ²• 1단계: μˆ˜ν–‰λ˜λŠ” μ—°μ‚°(μ‚°μˆ , 비ꡐ, λŒ€μž… λ“±)의 개수λ₯Ό λŒ€λž΅μ μœΌλ‘œ νŒλ‹¨ν•œλ‹€.

public int Add(int N){
	return N + N;
}

=> λŒ€μž…ν•˜λŠ” 1번의 μ—°μ‚°

public int Add2(int N){
	int sum = 0;
    
    for(int i = 0; i<N; i++){
    	sum += i;
        return sum;
    }
}

=> N(forλ¬Έ) + 1(sum에 0을 λŒ€μž…ν•˜λŠ” μ—°μ‚°) 번의 μ—°μ‚°

public int Add3(int N){
	int sum = 0;
    for(int i = 0; i<N; i++){
    	for(int j = 0; j<N; j++){
        	sum += 1;
        }
    }
    return sum;
}

=> N²(이쀑 forλ¬Έ) + 1(sum에 0을 λŒ€μž…ν•˜λŠ” μ—°μ‚°) 번의 μ—°μ‚°

 

2. Big-O ν‘œκΈ°λ²• 2단계: λŒ€μž₯만 λ‚¨κΈ°μž

κ·œμΉ™1) 영ν–₯λ ₯이 κ°€μž₯ 큰 λŒ€ν‘œ ν•­λͺ©λ§Œ 남기고 μ‚­μ œν•œλ‹€.

κ·œμΉ™2) μƒμˆ˜λŠ” λ¬΄μ‹œ(ex. 2N -> N)

 

3. Big-O ν‘œκΈ°λ²• 크기 비ꡐ

O(1) < O(logN) < O(N) < O(NlogN) < O(N²)

728x90