Skip to content

Latest commit

Β 

History

History

prg42839

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Β 
Β 
Β 
Β 

[programmers - 완전탐색] μ†Œμˆ˜ μ°ΎκΈ°

image

문제 풀이

이 λ¬Έμ œλŠ” λ§Œλ“€ 수 μžˆλŠ” 숫자 μ°ΎκΈ°, μ†Œμˆ˜ νŒλ³„ν•˜κΈ° μ΄λ ‡κ²Œ 2가지 문제λ₯Ό ν•΄κ²°ν•˜λŠ” κ²ƒμœΌλ‘œ λ³Ό 수 μžˆλ‹€.

λ§Œλ“€ 수 μžˆλŠ” 숫자의 경우λ₯Ό μ°ΎλŠ” 것은 μž¬κ·€λ₯Ό μ΄μš©ν•œ μ™„μ „ νƒμƒ‰μœΌλ‘œ ν’€λ©΄ λœλ‹€.

μ†Œμˆ˜ νŒλ³„μ€ μ²˜μŒμ— μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체λ₯Ό μ΄μš©ν•΄ κ΅¬ν˜„ν•˜λ €κ³  ν–ˆμœΌλ‚˜, numbersκ°€ 길이 1 이상 7 μ΄ν•˜μΈ λ¬Έμžμ—΄μ΄λ―€λ‘œ μ—°μ‚° νšŸμˆ˜κ°€ λ„ˆλ¬΄ λŠ˜μ–΄λ‚˜λŠ” λ¬Έμ œκ°€ 생겼닀. λ‹¨μˆœνžˆ for문을 돌며 mod μ—°μ‚°μœΌλ‘œ ν’€λ©΄ O(n)의 μ‹œκ°„ λ³΅μž‘λ„λ‘œ ν’€ 수 μžˆλŠ”λ° 말이닀. μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ μ²΄λŠ” μ†Œμˆ˜ νŒλ³„ν•  μˆ˜λ“€μ˜ λ²”μœ„κ°€ λ„ˆλ¬΄ 크지 μ•Šκ³ , λŒ€λŸ‰μ˜ μ†Œμˆ˜λ“€μ„ ν•œ λ²ˆμ— νŒλ³„ν•΄μ•Ό ν•  λ¬Έμ œμ—μ„œ μ“°λŠ” 것이 쒋을 것 κ°™λ‹€.

μ†Œμˆ˜ νŒλ³„ O(n) -> O(n^(1/2))

λ‹¨μˆœν•œ μ†Œμˆ˜ νŒλ³„ μ•Œκ³ λ¦¬μ¦˜λ„ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό O(n)μ—μ„œ O(n^(1/2))으둜 쀄일 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄, 8의 경우 2 * 4 = 4 * 2와 같은 μ‹μœΌλ‘œ λŒ€μΉ­μ„ 이루기 λ•Œλ¬Έμ— κ΅¬ν•˜κ³ μž ν•˜λŠ” 숫자의 μ œκ³±κ·ΌκΉŒμ§€λ§Œ μ•½μˆ˜μ˜ μ—¬λΆ€λ₯Ό κ²€μ¦ν•˜λ©΄ λ˜κ² λ‹€. μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

boolean isPrime(int n) {
    if (n == 0 || n == 1) return false;
    int end = (int) Math.sqrt(n);
    for (int i = 2; i <= end; i++) {
        if (n % i == 0) return false;
    }
    return true;
}