์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ/์ž๋ฐ”

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / ์ž๋ฐ” / Lv.2] 12924 ์ˆซ์ž์˜ ํ‘œํ˜„

HHRR 2024. 7. 23. 17:11
๋ฌธ์ œ

 

ํ’€์ด

 

์—ฐ์†๋œ ์ˆซ์ž์˜ ํ•ฉ์ด n์ด ๋˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

์ฒ˜์Œ์— ์—ฐ์†๋œ ์ˆซ์ž์˜ ํ•ฉ์ด๋‹ˆ๊นŒ ๋“ฑ์ฐจ์ˆ˜์—ด๋กœ ํ’€์–ด์•ผ๊ฒ ๋‹ค.. ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ–ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ํ’€์ด

n: ์ฃผ์–ด์ง„ ์ˆ˜(ํ•ฉํ•œ ๊ฐ’), a: ์ฒซ์งธํ•ญ, b: ๋งˆ์ง€๋ง‰ํ•ญ

๊ธฐ๋ณธ ๋ฒ ์ด์Šค๋Š” ์œ„์˜ ๋“ฑ์ฐจ์ˆ˜์—ด ๊ณต์‹์„ ์ƒ๊ฐํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.

1. n==n์ธ ๊ฒฝ์šฐ๋ฅผ ๋ฏธ๋ฆฌ ์„ธ์–ด์ฃผ๊ธฐ ์œ„ํ•ด count๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”ํ•จ

2. ์ด์ค‘ for๋ฌธ์œผ๋กœ ์ € ๊ณต์‹์„ ๋งŒ์กฑํ•˜๋Š” a, b ๊ฐ’์ด ์กด์žฌํ•˜๋ฉด count๋ฅผ ๋Š˜๋ ค์คŒ

3. for๋ฌธ ๋‹ค ๋Œ๋ฉด count ๋ฐ˜ํ™˜

์ด๋ ‡๊ฒŒํ•ด์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋‹ค ํ†ต๊ณผ๋๋Š”๋ฐ... ์‹œ๊ฐ„๋ณต์žก๋„ O(n^2)์ด๋ผ ๊ทธ๋Ÿฐ์ง€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œธ ใ…œใ…œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€๋ฉด ๋˜๋Š”๋ฐ ์˜ค๊ธฐ๊ฐ€ ์ƒ๊ฒจ์„œ ๋“ฑ์ฐจ์ˆ˜์—ด ๊ณ ์ง‘ํ•˜๋‹ค๊ฐ€ ์‹œ๊ฐ„ ๋งŽ์ด ๋ฒ„๋ฆฐ ๋ฌธ์ œ...ใ…‹ใ…‹ 

class Solution {
    public int solution(int n) {
        int count = 1;
        for(int a=1; a<n+1; a++){
            for (int b=a+1; b<n+1; b++){
                if ((b-a+1)*(b+a)/2 == n) count++;
            }
        }
        return count;
    }
}

 

๋‘๋ฒˆ์งธ ํ’€์ด

 

๊ทธ๋ž˜์„œ ์ƒ๊ฐํ•œ ๋‘๋ฒˆ์งธ ํ’€์ด

n: ์ฃผ์–ด์ง„ ์ˆ˜(ํ•ฉํ•œ ๊ฐ’), a: ์ฒซ์งธํ•ญ, k: ์—ฐ์†๋œ ์ž์—ฐ์ˆ˜์˜ ๊ฐœ์ˆ˜

๋งˆ์ง€๋ง‰ํ•ญ์„ ๋นผ๊ณ  ๊ฐœ์ˆ˜ k๋กœ ๋“ฑ์ฐจ์ˆ˜์—ด ์‹ ์„ธ์šฐ๊ณ  ๋‘๋ฒˆ์งธ ํ•ญ์ฒ˜๋Ÿผ ์ •๋ฆฌํ•ด์ค€๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ์ฒซ์งธํ•ญ ๊ณต์‹์„ ์„ธ์šธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ ์ฒซ์งธํ•ญ์ด k๋กœ ๋‚˜๋ˆ ์ ธ์•ผ์ง€ ๋ฌด์กฐ๊ฑด ์ž์—ฐ์ˆ˜๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ณต์‹์„ ํ™œ์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค.

1. ์œ„์˜ ์ฒซ์งธํ•ญ ๊ณต์‹์—์„œ n-(k(k-1)) > 0 ์ด์—ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, for๋ฌธ์˜ ์กฐ๊ฑด์„ k(k-1)/2 <n ์œผ๋กœ ์„ค์ •ํ•ด์คŒ.

2. ๊ทธ๋ฆฌ๊ณ  ์ฒซ์งธํ•ญ์ด ์ž์—ฐ์ˆ˜๊ฐ€ ๋˜๋Š” if๋ฌธ์„ ํ†ตํ•ด ์กฐ๊ฑด์— ๋งž๋‹ค๋ฉด ํ•ฉ๊ณต์‹์ด ์„ฑ๋ฆฝํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— count๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์คŒ

  == (n-(k(k-1)/2) ์ด๊ฒŒ k๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ธ ๊ฒฝ์šฐ count++ 

3. for๋ฌธ ๋‹ค ๋Œ๋ฉด count ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ธฐ

// ๋“ฑ์ฐจ์ˆ˜์—ด ์ด์šฉ
// k : ์—ฐ์†๋œ ์ž์—ฐ์ˆ˜์˜ ๊ฐœ์ˆ˜, n : ์ฃผ์–ด์ง„ ์ˆ˜
// ์ฒซ์งธํ•ญ = (n-(k(k-1))/2)/k
class Solution {
    public int solution(int n) {
        int count = 0;
        for(int k=1; k*(k-1)/2 < n; k++){
            if ((n-(k*(k-1)/2)) % k == 0){ // n - (k*(k-1))/2๊ฐ€ k๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด ํ•ฉ๊ณต์‹ ์„ฑ๋ฆฝ
                count++;
            }
        }
        return count;
    }
}

 

 

๊ฐ„์‹ ํžˆ ํšจ์œจ์„ฑ๋„ ํ†ต๊ณผํ–ˆ๋‹ค.....

ํž˜๋“ค์—ˆ๋‹ค... 1์”ฉ ์ฆ๊ฐ€ํ•ด์„œ ๋”ํ•˜๋Š” for๋ฌธ์œผ๋กœ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ๊ดœํžˆ ๋“ฑ์ฐจ์ˆ˜์—ด ์“ฐ๊ณ ์‹ถ์–ด์„œ ๋ณต์žกํ•˜๊ณ  ์–ด๋ ต๊ฒŒ ํ‘ผ ๋“ฏ. ๋‹ค์Œ์— ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.