Skip to content

Commit c52b6c2

Browse files
committed
[Gold III] Title: 여왕벌, Time: 556 ms, Memory: 36808 KB, Score: 83 point -BaekjoonHub
1 parent e337f4d commit c52b6c2

2 files changed

Lines changed: 26 additions & 34 deletions

File tree

백준/Gold/10836. 여왕벌/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
### 성능 요약
66

7-
메모리: 23700 KB, 시간: 268 ms
7+
메모리: 36808 KB, 시간: 556 ms
88

99
### 분류
1010

1111
구현, 시뮬레이션
1212

1313
### 제출 일자
1414

15-
2024년 11월 30일 05:25:15
15+
2024년 11월 30일 06:01:25
1616

1717
### 문제 설명
1818

백준/Gold/10836. 여왕벌/여왕벌.java

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33

44
public class Main {
55
static int n, m;
6-
static int[][] bee, grow_info, diff;
6+
static int[][] bee;
7+
static int[] zero, one, two;
78
static StringTokenizer st;
89
static StringBuilder sb = new StringBuilder();
910
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
1011
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
1112
public static void main(String[] args) throws Exception{
1213
pre_setting();
13-
for(int i = 0; i < n; i++) grow(i);
14-
14+
daily_grow();
15+
1516
for (int i = 0; i < m; i++) {
1617
for (int j = 0; j < m; j++) {
1718
sb.append(bee[i][j]).append(" ");
@@ -22,39 +23,27 @@ public static void main(String[] args) throws Exception{
2223
bw.close();
2324
}
2425

25-
static void grow(int day){
26-
daily_setting(day);
26+
static void daily_grow(){
27+
for(int day = 0; day < n; day++) {
2728

28-
for(int i = 1; i < m; i++){
29-
for(int j = 1; j < m; j++){
30-
diff[i][j] = Math.max(diff[i][j - 1], Math.max(diff[i - 1][j - 1], diff[i - 1][j]));
31-
bee[i][j] += diff[i][j];
29+
for (int i = m - 1; 0 <= i; i--) {
30+
31+
if(0 < zero[day]--) bee[i][0] += 0;
32+
else if(0 < one[day]--) bee[i][0] += 1;
33+
else if(0 < two[day]--) bee[i][0] += 2;
3234
}
33-
}
34-
}
3535

36-
static void daily_setting(int day){
37-
for (int i = m - 1; 0 <= i; i--) {
36+
for (int i = 1; i < m; i++) {
3837

39-
for(int j = 0; j < 3; j++) {
40-
if(0 < grow_info[day][j]){
41-
diff[i][0] = j;
42-
bee[i][0] += j;
43-
grow_info[day][j]--;
44-
break;
45-
}
38+
if(0 < zero[day]--) bee[0][i] += 0;
39+
else if (0 < one[day]--) bee[0][i] += 1;
40+
else if (0 < two[day]--) bee[0][i] += 2;
4641
}
4742
}
4843

49-
for (int i = 1; i < m; i++) {
50-
for(int j = 0; j < 3; j++) {
51-
if(0 < grow_info[day][j]){
52-
diff[0][i] = j;
53-
bee[0][i] += j;
54-
grow_info[day][j]--;
55-
break;
56-
57-
}
44+
for(int i = 1; i < m; i++){
45+
for(int j = 1; j < m; j++){
46+
bee[i][j] += Math.max(bee[i][j - 1], Math.max(bee[i - 1][j - 1], bee[i - 1][j])) - 1;
5847
}
5948
}
6049
}
@@ -64,15 +53,18 @@ static void pre_setting() throws Exception{
6453
n = Integer.parseInt(st.nextToken());
6554

6655
bee = new int[m][m];
67-
diff = new int[m][m];
68-
grow_info = new int[n][3];
56+
zero = new int[n];
57+
one = new int[n];
58+
two = new int[n];
6959

7060
for (int i = 0; i < m; i++) Arrays.fill(bee[i], 1);
7161

7262
for(int i = 0; i < n; i++){
7363
st = new StringTokenizer(br.readLine());
7464

75-
for(int j = 0; j < 3; j++) grow_info[i][j] = Integer.parseInt(st.nextToken());
65+
zero[i] = Integer.parseInt(st.nextToken());
66+
one[i] = Integer.parseInt(st.nextToken());
67+
two[i] = Integer.parseInt(st.nextToken());
7668
}
7769
}
7870
}

0 commit comments

Comments
 (0)