clvl1022 2025. 8. 11. 11:44
 

[์ง€๊ธˆ ๋ฌด๋ฃŒ]Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ with JAVA| ํ•˜๋ฃจ์ฝ”๋”ฉ - ์ธํ”„๋Ÿฐ ๊ฐ•์˜

ํ˜„์žฌ ํ‰์  5์  ์ˆ˜๊ฐ•์ƒ 9092๋ช…์ธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”. IT๊ธฐ์—… ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„๋ฅผ ์œ„ํ•œ [์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•ต์‹ฌ์ด๋ก  & ๊ด€๋ จ ์‹ค์ „ ๋ฌธ์ œ ํ’€์ด ๊ฐ•์˜] ์ž…๋‹ˆ๋‹ค. - JAVA ํŽธ - ์ฝ”๋”ฉํ…Œ์ŠคํŠธ(Coding Test)์— ํ•„์š”ํ•œ

www.inflearn.com

์œ„์˜ ๊ฐ•์˜๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

์‹œ๊ฐ„ ๋ณต์žก๋„๋ž€?

์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 

 

๐Ÿ’ก ์ˆ˜ํ–‰์‹œ๊ฐ„

1์–ต๋ฒˆ์˜ ์—ฐ์‚ฐ์„ 1์ดˆ์˜ ์‹œ๊ฐ„์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. 

โžก๏ธ ์ฆ‰, 2์ดˆ์˜ ์ œํ•œ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง„๋‹ค๋ฉด 2์–ต๋ฒˆ์˜ ์—ฐ์‚ฐ์•ˆ์— ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

 


 

์‹œ๊ฐ„ ๋ณต์žก๋„ ์œ ํ˜•

์ตœ์„  ๋ณดํ†ต ์ตœ์•…
๋น… ์˜ค๋ฉ”๊ฐ€ ( โ„ฆ (n) ๋น… ์„ธํƒ€ ( θ(n) ) ๋น… ์˜ค ( O(n))

 

public class Main {
    public static void main(String[] args) {
        // 0 ~ 99์‚ฌ์ด์˜ ๋žœ๋ค ๊ฐ’
        int n = (int) (Math.random() * 100);

        for (int i = 0; i < 100; i++) {
            if (i == n) {
                System.out.print(i);
                break;
            }
        }
    }
}

 

 

n = 0์ธ ๊ฒฝ์šฐ

for๋ฌธ์€ ์˜ค์ง 1๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋Š” ๋น… ์˜ค๋ฉ”๊ฐ€์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.  

 

n = 32, 54, 68 . . . . ์ธ ๊ฒฝ์šฐ

for๋ฌธ์€ N(100๋ฒˆ)์„ ๊ธฐ์ค€์œผ๋กœ ํ‰๊ท  N/2๋ฒˆ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋Š” ๋น… ์„ธํƒ€์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

 

n = 99์ธ ๊ฒฝ์šฐ

for๋ฌธ์„ ๋ชจ๋‘ ์‹คํ–‰ํ•˜๊ณ  ๋‚˜์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๋น…์˜ค ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š”?

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ(N)์ด ๋‹ค์–‘ํ•˜๊ฒŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์ตœ์„ ·ํ‰๊ท ์— ๋งž์ถ˜ ๋ถ„์„๋ณด๋‹ค๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ ๋น…-์˜ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

์—ฐ์‚ฐ ํšŸ์ˆ˜ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

์—ฐ์‚ฐ ํšŸ์ˆ˜ = ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ X ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ 

 

[์˜ˆ์‹œ]

์‹œ๊ฐ„ ๋ณต์žก๋„: O(N^2) , ๋ฐ์ดํ„ฐ ํฌ๊ธฐ: 1000

 

โžก๏ธ 1000^2์ธ 1,000,000์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.


 

์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ ๋กœ์ง ๊ฐœ์„ ํ•˜๊ธฐ 

1. ์ƒ์ˆ˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ์—์„œ ์ œ์™ธ

 

O(N) ์˜ˆ์‹œ

public class Main {
    public static void main(String[] args) {
        int n = 100000;

        for (int i = 0; i < n; i++) {
            System.out.println(i + "๋ฒˆ์งธ ์ˆ˜ํ–‰");
        }
    }
}

 

for๋ฌธ์ด 3๊ฐœ ์กด์žฌํ•˜๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(3N)์ด์ง€๋งŒ, ์‹ค์ œ ์‹คํ–‰ ์‹œ๊ฐ„์€ O(N)๊ณผ ํฐ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ๋Š” ์ƒ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ  ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

 

 

2. ๊ฐ€์žฅ ๋งŽ์ด ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๊ฐ€ ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ๊ธฐ์ค€

 

O(N^2)

public class Main {
    public static void main(String[] args) {
        int n = 100000;
        int cnt = 0;

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.println("์ˆ˜ํ–‰ ํšŸ์ˆ˜: " + cnt++);
            }
        }
    }
}

 

์œ„์˜ ์˜ˆ์‹œ์—์„œ ์ค‘์ฒฉ๋œ for๋ฌธ์€ O(N^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ผ for๋ฌธ์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋”๋ผ๋„ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋ณ€ํ•˜์ง€ ์•Š๊ณ  O(N^2) ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ 3๊ฐœ์˜ ์ค‘์ฒฉ๋œ for๋ฌธ์ด ์žˆ๋‹ค๋ฉด?

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

์ด์ค‘ for๋ฌธ ์ˆ˜๋ฐฑ๊ฐœ๋ณด๋‹ค 3์ค‘ for๋ฌธ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” 3์ค‘ for๋ฌธ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. 

 

๋”ฐ๋ผ์„œ, ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ค‘์ฒฉ๋œ for๋ฌธ์„ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.