๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[C++/PGS] Lv.3 : N์œผ๋กœ ํ‘œํ˜„ (DP)

728x90
๋ฐ˜์‘ํ˜•

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

 

๋ฌธ์ œ ์„ค๋ช…

์•„๋ž˜์™€ ๊ฐ™์ด 5์™€ ์‚ฌ์น™์—ฐ์‚ฐ๋งŒ์œผ๋กœ 12๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

12 = 5 + 5 + (5 / 5) + (5 / 5)
12 = 55 / 5 + 5 / 5
12 = (55 + 5) / 5

5๋ฅผ ์‚ฌ์šฉํ•œ ํšŸ์ˆ˜๋Š” ๊ฐ๊ฐ 6,5,4 ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฒฝ์šฐ๋Š” 4์ž…๋‹ˆ๋‹ค.
์ด์ฒ˜๋Ÿผ ์ˆซ์ž N๊ณผ number๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, N๊ณผ ์‚ฌ์น™์—ฐ์‚ฐ๋งŒ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ค‘ N ์‚ฌ์šฉํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ
  • N์€ 1 ์ด์ƒ 9 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • number๋Š” 1 ์ด์ƒ 32,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ˆ˜์‹์—๋Š” ๊ด„ํ˜ธ์™€ ์‚ฌ์น™์—ฐ์‚ฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์—์„œ ๋‚˜๋จธ์ง€๋Š” ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์†Ÿ๊ฐ’์ด 8๋ณด๋‹ค ํฌ๋ฉด -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

 

์–ด๋ ค์šด dp๋ฌธ์ œ... ์‚ฌ์‹ค dfs๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ ๋ถ„๋ฅ˜๊ฐ€ dp๊ธธ๋ž˜ dp๋กœ ํ’€๋ ค๊ณ  ์ตœ์„ ์„ ๋‹คํ–ˆ์œผ๋‚˜

์‹คํŒจํ•˜๊ณ  ๊ทธ๋ƒฅ ๊ตฌ๊ธ€๋งํ•ด๋ณด์•˜๋‹ค

 

๊ทผ๋ฐ ์„ค๋ช… ๋ณด๊ณ ๋„ ์ดํ•ด๊ฐ€ ์•ˆ๋ผ์„œ ํ•œ์ฐธ์„ ๋„์ ์ด๋ฉด์„œ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•จ. ๊ทธ๋ž˜์„œ ํ•œ 80ํผ ์ •๋„ ์ดํ•ดํ–ˆ๋‹ค....

 

 

์•„๋‹ˆ ์˜์‚ฌ์–‘๋ฐ˜

4์ค‘ for๋ฌธ์€ ๋„ˆ๋ฌดํ•œ๊ฑฐ ์•„๋‹ˆ์˜ค>?

 

 

๋‚˜์˜ ํ’€์ด

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

int solution(int N, int number) {
    int answer = -1;
    set<int> dp[8];
    
    int tmp=0;
    for(int i=0; i<8; ++i){
        tmp = tmp*10 + N;
        dp[i].insert(tmp);
    }
    
    for(int i=1; i<8; ++i){
        for(int j=0; j<i; ++j){
            for(int a : dp[j]){
                for(int b : dp[i-j-1]){
                    dp[i].insert(a+b);
                    dp[i].insert(a-b);
                    dp[i].insert(a*b);
                    if(b>0) dp[i].insert(a/b);
                }
            }
        }
    }
    
    for(int i=0; i<8; ++i){
        if(dp[i].count(number)){
            answer = i+1;
            break;
        }
    }
    
    return answer;
}

 

728x90
๋ฐ˜์‘ํ˜•