๊ธฐ๋ก๋ฐฉ

Lv.1 : ๊ธฐ์‚ฌ๋‹จ์›์˜ ๋ฌด๊ธฐ ๋ณธ๋ฌธ

CodingTest/Java

Lv.1 : ๊ธฐ์‚ฌ๋‹จ์›์˜ ๋ฌด๊ธฐ

Soom_1n 2023. 4. 12. 17:42

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • 1๋ถ€ํ„ฐ number๊นŒ์ง€์˜ ์ˆ˜๋“ค์˜ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์˜ ์ด ํ•ฉ์„ ๊ตฌํ•œ๋‹ค.
    • ๋‹จ, ์•ฝ์ˆ˜๊ฐ€ limit๋ฅผ ๋„˜์œผ๋ฉด power๋กœ ๋ฐ”๊ฟ” ํ•ฉํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

class Solution {
    public int solution(int number, int limit, int power) {
        int answer = 0;
        
        // 1~number ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ
        for(int i = 1; i <= number; i++) {
            int cnt = i > 1 ? 2 : 1;
            
            // ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜
            for(int j = 2; j <= Math.sqrt(i); j++) {
                if(i%j==0) {
                    cnt += j!=Math.sqrt(i) ? 2 : 1;
                }
            }
            
            if(cnt > limit) cnt = power;
            answer += cnt;
        }
        
        return answer;
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • 2๋ถ€ํ„ฐ ์ œ๊ณฑ๊ทผ ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด ๋‚˜๋ˆ ์ง€๋ฉด ์นด์šดํŠธํ•œ๋‹ค.
  • i๊ฐ€ 1์ผ๋•Œ์™€ j๊ฐ€ ์ œ๊ณฑ๊ทผ๊ณผ ์ผ์น˜ํ•  ๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์คฌ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๋‹ค์Œ์€ ์•ฝ์ˆ˜ ์ฐพ๊ธฐ๋ฅผ ํ›จ์”ฌ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•œ ์ฝ”๋“œ์ด๋‹ค.
    • 2์ฐจ์› ๋ฐฐ์—ด์—์„œ i*j์˜ ์กฐํ•ฉ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
    • i์™€ j๊ฐ€ i*j์˜ ์•ฝ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
    • ์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ–ˆ๋‚˜ ์‹ถ๊ณ , ์†Œ์ˆ˜ ์ฐพ๊ธฐ์˜ ํšจ์œจ๋งŒ ์ƒ๊ฐํ•˜๋‹ค ์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ ํšจ์œจ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ ๋ดค๋Š”๋ฐ ์ž˜ ํ™œ์šฉํ•ด์•ผ ๊ฒ ๋‹ค.
class Solution {

    public int solution(int number, int limit, int power) {
        int[] count = new int[number + 1];    
        for (int i = 1; i <= number; i++) {
            for (int j = 1; j <= number / i; j++) {
                count[i * j]++;
            }
        }
        int answer = 0;
        for (int i = 1; i <= number; i++) {
            if (count[i] > limit) {
                answer += power;
            } else {
                answer += count[i];
            }
        }
        return answer;
    }
}

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Lv.1 : ๋ช…์˜ˆ์˜ ์ „๋‹น (1)  (0) 2023.04.14
BOJ_2293 : ๋™์ „ 1  (0) 2023.04.12
Lv.1 : ๊ณผ์ผ ์žฅ์ˆ˜  (0) 2023.04.12
Lv.1 : ํ‘ธ๋“œ ํŒŒ์ดํŠธ ๋Œ€ํšŒ  (0) 2023.04.12
Lv.1 : ํ–„๋ฒ„๊ฑฐ ๋งŒ๋“ค๊ธฐ  (0) 2023.04.10