๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Java] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ง์…ˆ

by yunamom 2022. 3. 18.
๋ฐ˜์‘ํ˜•

 

๐Ÿ’ก๋ฌธ์ œ ์„ค๋ช…

๋‘ ์ •์ˆ˜ left์™€ right๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. 
left๋ถ€ํ„ฐ right๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆ˜๋“ค ์ค‘์—์„œ, ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ ์ˆ˜๋Š” ๋”ํ•˜๊ณ ,
์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ์ˆ˜๋Š” ๋บ€ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ž…์ถœ๋ ฅ ์˜ˆ

left right result
13 17 43
24 27 52

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช… #1

  • ๋‹ค์Œ ํ‘œ๋Š” 13 ๋ถ€ํ„ฐ 17๊นŒ์ง€ ์ˆ˜๋“ค์˜ ์•ฝ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ˆ˜ ์•ฝ์ˆ˜ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜
13 1, 13 2
14 1, 2, 7, 14 4
15 1, 3, 5, 15 4
16 1, 2, 4, 8, 16 5
17 1, 17 2
  • ๋”ฐ๋ผ์„œ, 13 + 14 + 15 - 16 + 17 = 43 ์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช… #2

  • ๋‹ค์Œ ํ‘œ๋Š” 24๋ถ€ํ„ฐ 27๊นŒ์ง€์˜ ์ˆ˜๋“ค์˜ ์•ฝ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ˆ˜ ์•ฝ์ˆ˜ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜
24 1, 2, 3, 4, 6, 8, 12, 24 8
25 1, 5, 25 3
26 1, 2, 13, 26 4
27 1, 3, 9, 27 4
  • ๋”ฐ๋ผ์„œ, 24 - 25 + 26 + 27 = 52๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

answer case 1: 2์ค‘ for ๋ฌธ์œผ๋กœ ์™ผ์ชฝ์˜ ์ˆซ์ž๋ฅผ ๋Œ€์ž…์‹œ์ผœ์„œ ์ง์ˆ˜๋Š” +i ๋”ํ•ด์ฃผ๊ณ  ํ™€์ˆ˜๋Š” +(i * -1) ํ•ด์คŒ์œผ๋กœ์จ ๋นผ์ค€๋‹ค.

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        int cnt = 0;
        for(int i = left; i <= right; i++){
            cnt = 0;
            for(int j = 1; j<= i; j++){
                if( i % j == 0) cnt++;
            }
            answer += (cnt%2 == 0) ? i : (i*-1);
            /* ์ง์ˆ˜๋Š” +i ๋”ํ•ด์ฃผ๊ณ  ํ™€์ˆ˜๋Š” +(i * -1) ํ•ด์คŒ์œผ๋กœ์จ ๋นผ์ค€๋‹ค. */
        }
        return answer;
    }
}

answer case 2: Math.sqrt() = ์ œ๊ณฑ๊ทผ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

class Solution {
    public int solution(int left, int right) {
        int answer = 0;

        for (int i=left;i<=right;i++) {
            /* ์ œ๊ณฑ์ˆ˜์ธ ๊ฒฝ์šฐ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜ */
            if (i % Math.sqrt(i) == 0) {
                answer -= i;
            }
            /* ์ œ๊ณฑ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜ */
            else {
                answer += i;
            }
        }
        return answer;
    }
}

 

300x250

์ฝ”๋“œ