๐Ÿ’ป

[๋ฐฑ์ค€] ์กฐํ•ฉ๋ก  - 5557. 1ํ•™๋…„ ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œํ’€์ด Baekjoon

[๋ฐฑ์ค€] ์กฐํ•ฉ๋ก  - 5557. 1ํ•™๋…„

๋˜ํšจ๋‹ˆ 2020. 3. 21. 15:18

๋ฌธ์ œ

์ƒ๊ทผ์ด๊ฐ€ 1ํ•™๋…„ ๋•Œ, ๋ง์…ˆ, ๋บ„์…ˆ์„ ๋งค์šฐ ์ข‹์•„ํ–ˆ๋‹ค. ์ƒ๊ทผ์ด๋Š” ์ˆซ์ž๊ฐ€ ์ค„ ์ง€์–ด์žˆ๋Š” ๊ฒƒ์„ ๋ณด๊ธฐ๋งŒ ํ•˜๋ฉด, ๋งˆ์ง€๋ง‰ ๋‘ ์ˆซ์ž ์‚ฌ์ด์— '='์„ ๋„ฃ๊ณ , ๋‚˜๋จธ์ง€ ์ˆซ์ž ์‚ฌ์ด์—๋Š” '+' ๋˜๋Š” '-'๋ฅผ ๋„ฃ์–ด ๋“ฑ์‹์„ ๋งŒ๋“ค๋ฉฐ ๋†€๊ณ  ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "8 3 2 4 8 7 2 4 0 8 8"์—์„œ ๋“ฑ์‹ "8+3-2-4+8-7-2-4-0+8=8"์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ƒ๊ทผ์ด๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋“ฑ์‹์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์ƒ๊ทผ์ด๋Š” ์•„์ง ํ•™๊ต์—์„œ ์Œ์ˆ˜๋ฅผ ๋ฐฐ์šฐ์ง€ ์•Š์•˜๊ณ , 20์„ ๋„˜๋Š” ์ˆ˜๋Š” ๋ชจ๋ฅธ๋‹ค. ๋”ฐ๋ผ์„œ, ์™ผ์ชฝ๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•  ๋•Œ, ์ค‘๊ฐ„์— ๋‚˜์˜ค๋Š” ์ˆ˜๊ฐ€ ๋ชจ๋‘ 0 ์ด์ƒ 20 ์ดํ•˜์ด์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "8+3+2-4-8-7+2+4+0+8=8"์€ ์˜ฌ๋ฐ”๋ฅธ ๋“ฑ์‹์ด์ง€๋งŒ, 8+3+2-4-8-7์ด ์Œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ƒ๊ทผ์ด๊ฐ€ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๋“ฑ์‹์ด๋‹ค.

์ˆซ์ž๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ƒ๊ทผ์ด๊ฐ€ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋“ฑ์‹์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ˆซ์ž์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (3 ≤ N ≤ 100) ๋‘˜์งธ ์ค„์—๋Š” 0 ์ด์ƒ 9 ์ดํ•˜์˜ ์ •์ˆ˜ N๊ฐœ๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ƒ๊ทผ์ด๊ฐ€ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋“ฑ์‹์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ด ๊ฐ’์€ 2^63-1 ์ดํ•˜์ด๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1

11

8 3 2 4 8 7 2 4 0 8 8

 

์˜ˆ์ œ ์ถœ๋ ฅ1

10

 

ํžŒํŠธ

  • 8+3-2-4+8-7-2-4-0+8=8
  • 8+3-2-4+8-7-2-4+0+8=8
  • 8+3+2+4-8-7+2-4-0+8=8
  • 8+3+2+4-8-7+2-4+0+8=8
  • 8+3+2-4+8-7+2+4-0-8=8
  • 8+3+2-4+8-7+2+4+0-8=8
  • 8-3+2+4-8+7+2+4-0-8=8
  • 8-3+2+4-8+7+2+4+0-8=8
  • 8-3+2-4+8+7+2-4-0-8=8
  • 8-3+2-4+8+7+2-4+0-8=8

์ƒ๊ฐ

๋จผ์ €, ๋ฌธ์ œ์—์„œ ์ถœ๋ ฅ์ด 2^63-1 ์ดํ•˜์˜ ํฐ ์ˆซ์ž ์ด๋ฏ€๋กœ long long ์œผ๋กœ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค. 

d[i][j] : i๋ฒˆ์งธ ์ˆซ์ž๊นŒ์ง€๋กœ j(0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ  20๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜)๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐฏ์ˆ˜๋ฅผ ๋œปํ•œ๋‹ค.

 

8  3  2  4  8  7  2  4  0  8  8

d[0][8] = 1

d[1][8+3] = d[1][11] = 1

d[1][8-3] = d[1][5] = 1

 

 

 

์ž‘์„ฑํ•œ ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
 
using namespace std;
 
int n;
int num[101];
long long d[101][21];
 
int main(int argc, const char * argv[]) {
    // insert code here...
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin >> n;
    
    for (int i = 0; i < n; i++) {
        cin >> num[i];
    }
 
    d[0][num[0]] = 1;
 
    for (int i = 1; i < n-1; i++) {
        for (int j = 0; j <= 20; j++) {
            if (d[i][j] != 0) {
                if (j + num[i] <= 20) {
                    d[i][j + num[i]] += d[i-1][j];
                }
                if (j - num[i] >= 0) {
                    d[i][j - num[i]] += d[i-1][j];
                }
            }
        }
    }
 
    cout << d[n-2][num[n-1]] << "\n";
   
    return 0;
}
 
Colored by Color Scripter
๋ฐ˜์‘ํ˜•
Comments