반응형
https://www.acmicpc.net/problem/12886
boolean 형을 잘못생각하면 1000 1000 1000 구조로 해야하나 생각 할수 있다.
이렇게 제출하면 메모리초과 오류를 발생시킨다.
따라서 문제를 자세히보면 a b c 의 총량은 항상 일정하다는것을 알수있다. 따라서 2개의 값이정해지면 나머지하나의 값은 전체에서 두개를 빼주는 아이디어로 메로리초과를 방지할수가있다.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
import java.util.LinkedList;
import java.util.Queue;
public class B12886 {
static int Answer = 0;
static class Pair {
int a;
int b;
public Pair(int a, int b) {
super();
this.a = a;
this.b = b;
}
}
static int sum = 0;
static boolean visit[][] = new boolean[1001][1001];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
sum = a + b + c;
Solve(a, b);
System.out.println(Answer);
}
public static void Solve(int a, int b) {
if (sum % 3 != 0)
return;
BFS(a, b);
}
public static void BFS(int a, int b) {
Queue<Pair> q = new LinkedList<>();
q.add(new Pair(a, b));
visit[a][b] = true;
while (!q.isEmpty()) {
Pair cur = q.poll();
int x = cur.a;
int y = cur.b;
int z = sum - x - y;
if (x == y && y == z) {
Answer = 1;
break;
}
if (x > y) {
if (y + y <= 1000 && !visit[x - y][y + y]) {
visit[x - y][y + y] = true;
q.add(new Pair(x - y, y + y));
}
}
if (x < y) {
if (x + x <= 1000 && !visit[x + x][y - x]) {
visit[x + x][y - x] = true;
q.add(new Pair(x + x, y - x));
}
}
if (x > z) {
if (z + z <= 1000 && !visit[z + z][x - z]) {
visit[z + z][x - z] = true;
q.add(new Pair(z + z, x - z));
}
}
if (x < z) {
if (x + x <= 1000 && !visit[x + x][z - x]) {
visit[x + x][z - x] = true;
q.add(new Pair(x + x, z - x));
}
}
if (y > z) {
if (z + z <= 1000 && !visit[z + z][y - z]) {
visit[z + z][y - z] = true;
q.add(new Pair(z + z, y - z));
}
}
if (y < z) {
if (y + y <= 1000 && !visit[y + y][z - y]) {
visit[y + y][z - y] = true;
q.add(new Pair(y + y, z - y));
}
}
}
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
반응형
'ProgramSoliving' 카테고리의 다른 글
백준 : 1637 (0) | 2020.04.15 |
---|---|
백준 : 5213 JAVA (0) | 2020.03.17 |
백준 : 1086 JAVA (0) | 2020.03.14 |
백준 : 16946 (0) | 2020.03.11 |
백준 : 10217 (0) | 2020.03.08 |