Deep_Dev
article thumbnail

https://school.programmers.co.kr/learn/courses/30/lessons/136798

 

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

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

programmers.co.kr


์•ฝ์ˆ˜ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋งŒ ํšจ์œจ์ ์œผ๋กœ ์ง ๋‹ค๋ฉด ์‰ฌ์šด ๋ฌธ์ œ์ด๋‹ค.

 

๋งŒ์•ฝ์— ์•ฝ์ˆ˜๋ฅผ

for( int i = 1; i <= number; i++){
     for (int j = 1; j <= i; j++ ) {
          if(i%j==0) ์•ฝ์ˆ˜
     }
}

์ด๋ ‡๊ฒŒ ๋‹จ์ˆœํ•˜๊ฒŒ ์งœ๋ฉด, ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ ค ๋กœ์ง์ด ๋งž์•„๋„ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œฌ๋‹ค.

 

์กฐ๊ธˆ๋งŒ ์ƒ๊ฐ์„ ํ•ด๋ณด๋ฉด, number์˜ ์•ฝ์ˆ˜๊ฐ€ 1์ผ๋•Œ ๋‹ค๋ฅธ ์•ฝ์ˆ˜๋Š” number/1์ด ๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ ์•ฝ์ˆ˜๋Š” number๊ฐ€ ๋œ๋‹ค.

๋‹ค์‹œ๋งํ•ด number์˜ ์•ฝ์ˆ˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ i ๋ผ๊ณ  ํ–ˆ์„๋•Œ, ๋‹ค๋ฅธ ์•ฝ์ˆ˜๋Š” number/i๊ฐ€ ๋˜๋ฏ€๋กœ ํ•˜๋‚˜์˜ ์•ฝ์ˆ˜๋ฅผ ์•Œ๋ฉด ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ ์กด์žฌ๊ฐ€ ๋ณด์žฅ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„์„ ํ›จ์”ฌ ์•„๋‚„ ์ˆ˜ ์žˆ๋‹ค.

 

int number = 123456789;
int cnt = 0;
for(int i=1; i*i <= number; i++) {
     if( i*i == number) cnt++;
     else if(number % i == 0) cnt+=2;
}

์ด๋ ‡๊ฒŒ ์งœ๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

import java.util.*;
class Solution {
    public int solution(int number, int limit, int power) {
        int answer = 0;

        ArrayList<Integer> list = new ArrayList<>();

        for(int i=1; i<=number; i++){
           int cnt=0;
           for(int j=1; j*j<=i; j++){
               if( j*j == i) cnt++;
               else if(i%j==0) cnt+=2;
           }
           list.add(cnt);
        }

        for(int i=0; i<list.size(); i++){
            if(list.get(i)<=limit){ // ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š์œผ๋ฉด
                answer+=list.get(i);
            } else { // ์ดˆ๊ณผ ํ•  ๊ฒฝ์šฐ power๋กœ ๋Œ€์ฒด
                answer+=power;
            }
        }
        return answer;
    }
}

 

์Œ.. 

์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ ๋‚˜์„œ Collections.sort(list)๋ฅผ ํ•˜๊ณ , 

๋ฐ‘์— for๋ฌธ์—์„œ list๋ฅผ ๋Œ๋ฉด์„œ, limit์„ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ power * (list.size() - i)๋ฅผ ํ•˜๊ณ  break ๊ฑธ์–ด์„œ ๋๋‚ด๋ดค๋Š”๋ฐ,

์ด๊ฒŒ ์กฐ๊ธˆ ๋” ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค. ์•„๋งˆ ์ •๋ ฌ์„ ํ•ด์„œ ๊ทธ๋ ‡๊ฒ ์ง€...