๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ˆซ์ž์˜ ํ‘œํ˜„(Level 2)

by ์•ˆ์ฃผํ˜• 2022. 4. 24.

๋ฌธ์ œ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ˆซ์ž์˜ ํ‘œํ˜„

Finn์€ ์š”์ฆ˜ ์ˆ˜ํ•™๊ณต๋ถ€์— ๋น ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜ํ•™ ๊ณต๋ถ€๋ฅผ ํ•˜๋˜ Finn์€ ์ž์—ฐ์ˆ˜ n์„ ์—ฐ์†ํ•œ ์ž์—ฐ์ˆ˜๋“ค๋กœ ํ‘œํ˜„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด 15๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 4๊ฐ€์ง€๋กœ ํ‘œํ˜„ ํ• 

programmers.co.kr

์ฝ”๋“œ

#include <string>
#include <vector>
using namespace std;

int solution(int n) {
    int answer = 0;
    
    for(int i=1; i<=n; i++){
        int sum = 0;
        for(int k=i; k<=n; k++){
            sum+=k;
            if(sum>n) break;
            else if(sum == n){
                answer++;
                break;
            }
        }
    }
    return answer;
}

ํ’€์ด(18๋ถ„)

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ๋”ฑ ๋ณด์•˜์„ ๋•Œ ์ž…๋ ฅ๊ฐ’์ด n์˜ ์ตœ๋Œ“๊ฐ’์ด 10000์ด๊ธธ๋ž˜ DP๋กœ ์ ‘๊ทผํ•ด๋ณผ๊นŒ ํ–ˆ์ง€๋งŒ DP ํ…Œ์ด๋ธ”์ด ๋„์ €ํžˆ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์•„ ์™„์ „ ํƒ์ƒ‰์œผ๋กœ ํ•œ๋ฒˆ ๊ณ ๋ฏผํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์ค‘ ํฌ๋ฌธ์— n๊นŒ์ง€ ๋„๋‹ˆ๊นŒ o(n^2)์ด๋ผ์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋œฐ๊ฑฐ๋ผ ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ž˜ ์ƒ๊ฐํ•ด๋ณด๋ฉด 1~141๊นŒ์ง€์˜ ๋ˆ„์ ํ•ฉ์ด 10011์ด๋ฏ€๋กœ ์‚ฌ์‹ค์ƒ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(10000*141)์ด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์™„์ „ ํƒ์ƒ‰์œผ๋กœ ๋ฌด๋‚œํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€