μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- ν°μ€ν 리μ±λ¦°μ§
- db
- κΉμ΄μ°μ νμ
- 그리λ
- νμ΄μ¬
- λ°±μ€
- BFS
- LIS
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- λμ ν©
- skala
- λ°μ΄ν°λ² μ΄μ€
- κ·Έλννμ
- μκ³ λ¦¬μ¦
- skala1κΈ°
- λ³ν©μ λ ¬
- DP
- μ°μ μμν
- ꡬν
- νλ‘κ·Έλλ¨Έμ€
- DFS
- μν
- μ€λΈμ
- SQL
- μ λ ¬
- λλΉμ°μ νμ
- κ·Έλν
- λμ κ³νλ²
- μμνμ
- λ¨Έμ§μνΈ
- Today
- Total
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[λ°±μ€] 16235λ²: λ무 μ¬ν ν¬ - C++ λ³Έλ¬Έ
λ¬Έμ
π 16235λ²: λ무 μ¬ν ν¬
λΆλμ° ν¬μλ‘ μ΅λμ λμ λ² μλλ μ΅κ·Ό NΓN ν¬κΈ°μ λ μ ꡬ맀νλ€. μλλ μμ¬μ΄ λ κ΄λ¦¬λ₯Ό μν΄ λ μ 1Γ1 ν¬κΈ°μ μΉΈμΌλ‘ λλμ΄ λμλ€. κ°κ°μ μΉΈμ (r, c)λ‘ λνλ΄λ©°, rμ κ°μ₯ μμμλΆν° λ¨μ΄μ§ μΉΈμ κ°μ, cλ κ°μ₯ μΌμͺ½μΌλ‘λΆν° λ¨μ΄μ§ μΉΈμ κ°μμ΄λ€. rκ³Ό cλ 1λΆν° μμνλ€.
μλλ μ μν΅μ 곡νκ³Ό μΆμ λ΅κ² λ μ μλΆμ μ‘°μ¬νλ λ‘λ΄ S2D2λ₯Ό λ§λ€μλ€. S2D2λ 1Γ1 ν¬κΈ°μ μΉΈμ λ€μ΄μλ μλΆμ μ‘°μ¬ν΄ μλμκ² μ μ‘νκ³ , λͺ¨λ μΉΈμ λν΄μ μ‘°μ¬λ₯Ό νλ€. κ°μ₯ μ²μμ μλΆμ λͺ¨λ μΉΈμ 5λ§νΌ λ€μ΄μλ€.
λ§€μΌ λ§€μΌ λμ λ μ 보면μ λΏλ―ν ν루λ₯Ό 보λ΄κ³ μλ μ΄λ λ μ΄λ° μκ°μ΄ λ€μλ€.
λ무 μ¬ν ν¬λ₯Ό νμ!
λ무 μ¬ν ν¬λ μμ λ¬λͺ©μ κ΅¬λ§€ν΄ μ΄λμ λ ν€μ΄ ν νμμ μμ΅μ μ»λ μ¬ν ν¬μ΄λ€. μλλ λ무 μ¬ν ν¬λ‘ λ ν° λμ λ²κΈ° μν΄ Mκ°μ λ무λ₯Ό κ΅¬λ§€ν΄ λ μ μ¬μλ€. κ°μ 1Γ1 ν¬κΈ°μ μΉΈμ μ¬λ¬ κ°μ λλ¬΄κ° μ¬μ΄μ Έ μμ μλ μλ€.
μ΄ λ무λ μ¬κ³μ μ 보λ΄λ©°, μλμ κ°μ κ³Όμ μ λ°λ³΅νλ€.
λ΄μλ λλ¬΄κ° μμ μ λμ΄λ§νΌ μλΆμ λ¨Ήκ³ , λμ΄κ° 1 μ¦κ°νλ€. κ°κ°μ λ무λ λλ¬΄κ° μλ 1Γ1 ν¬κΈ°μ μΉΈμ μλ μλΆλ§ λ¨Ήμ μ μλ€. νλμ μΉΈμ μ¬λ¬ κ°μ λλ¬΄κ° μλ€λ©΄, λμ΄κ° μ΄λ¦° λ무λΆν° μλΆμ λ¨Ήλλ€. λ§μ½, λ μ μλΆμ΄ λΆμ‘±ν΄ μμ μ λμ΄λ§νΌ μλΆμ λ¨Ήμ μ μλ λ무λ μλΆμ λ¨Ήμ§ λͺ»νκ³ μ¦μ μ£½λλ€.
μ¬λ¦μλ λ΄μ μ£½μ λλ¬΄κ° μλΆμΌλ‘ λ³νκ² λλ€. κ°κ°μ μ£½μ λ무λ§λ€ λμ΄λ₯Ό 2λ‘ λλ κ°μ΄ λλ¬΄κ° μλ μΉΈμ μλΆμΌλ‘ μΆκ°λλ€. μμμ μλλ λ²λ¦°λ€.
κ°μμλ λλ¬΄κ° λ²μνλ€. λ²μνλ λ무λ λμ΄κ° 5μ λ°°μμ΄μ΄μΌ νλ©°, μΈμ ν 8κ°μ μΉΈμ λμ΄κ° 1μΈ λλ¬΄κ° μκΈ΄λ€. μ΄λ€ μΉΈ (r, c)μ μΈμ ν μΉΈμ (r-1, c-1), (r-1, c), (r-1, c+1), (r, c-1), (r, c+1), (r+1, c-1), (r+1, c), (r+1, c+1) μ΄λ€. μλμ λ μ λ²μ΄λλ μΉΈμλ λλ¬΄κ° μκΈ°μ§ μλλ€.
겨μΈμλ S2D2κ° λ μ λμλ€λλ©΄μ λ μ μλΆμ μΆκ°νλ€. κ° μΉΈμ μΆκ°λλ μλΆμ μμ A[r][c]μ΄κ³ , μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
Kλ μ΄ μ§λ ν μλμ λ μ μ΄μμλ λ무μ κ°μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ N, M, Kκ° μ£Όμ΄μ§λ€.
λμ§Έ μ€λΆν° Nκ°μ μ€μ Aλ°°μ΄μ κ°μ΄ μ£Όμ΄μ§λ€. rλ²μ§Έ μ€μ cλ²μ§Έ κ°μ A[r][c]μ΄λ€.
λ€μ Mκ°μ μ€μλ μλκ° μ¬μ λ무μ μ 보λ₯Ό λνλ΄λ μΈ μ μ x, y, zκ° μ£Όμ΄μ§λ€. μ²μ λ κ°μ μ μλ λ무μ μμΉ (x, y)λ₯Ό μλ―Ένκ³ , λ§μ§λ§ μ μλ κ·Έ λ무μ λμ΄λ₯Ό μλ―Ένλ€.
μΆλ ₯
첫째 μ€μ Kλ μ΄ μ§λ ν μ΄μλ¨μ λ무μ μλ₯Ό μΆλ ₯νλ€.
μ ν
Β· 1 β€ N β€ 10
Β· 1 β€ M β€ N^2
Β· 1 β€ K β€ 1,000
Β· 1 β€ A[r][c] β€ 100
Β· 1 β€ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ λ무μ λμ΄ β€ 10
Β· μ λ ₯μΌλ‘ μ£Όμ΄μ§λ λ무μ μμΉλ λͺ¨λ μλ‘ λ€λ¦

λ¬Έμ κ° κΈΈμ§λ§ 쑰건μ μ λ°λΌκ°λ©΄ μκ³ λ¦¬μ¦μ΄λ νλ‘μΈμ€ μ체λ μ΄λ ΅μ§ μμ ꡬν λ¬Έμ .
κ·Έλ¬λ μκ° μ νμ΄ 0.3μ΄μ΄κΈ° λλ¬Έμ ν¨μ¨μ±μ μκ°ν΄μΌ νλ€.
Kλ μ μκ°μ 보λ΄λ©΄μ 4κ³μ λ§λ€ ν΄μ£Όλ μΌμ΄ μ ν΄μ Έμλ€.
πΈ λ΄ : μμ μ λμ΄λ§νΌ μλΆμ λ¨Ήκ³ λμ΄ + 1, νλμ μΉΈμ μ¬λ¬ 그루μ λλ¬΄κ° μλ κ²½μ°, μ΄λ¦° λ무λΆν° μλΆμ λ¨Ήλλ€. μλΆμ λ¨ΉμΌλ©΄ ν μ΄μ λ λ¨Ήκ³ , μΆ©λΆν μλΆμ μμ·¨νμ§ λͺ»ν κ²½μ° μ¦μ¬νλ€.
π μ¬λ¦ : λ΄μ μλΆμ λ¨Ήμ§ λͺ»νκ³ μ£½μ λ무λ€μ μμΉμλ μ£½μ λ무μ λμ΄/2 λ§νΌ μλΆμ΄ μΆκ°λλ€.
π κ°μ : λμ΄κ° 5μ λ°°μκ° λ λ무λ§, λ μ λ²μμ λ²μ΄λμ§ μλ ν 8κ°μ λ°©ν₯(β¬οΈβοΈβ‘οΈβοΈβ¬οΈβοΈβ¬ οΈβοΈ)μΌλ‘ μΈμ ν λ μ λμ΄κ° 1μΈ λ무λ₯Ό μμ±νλ€.
βοΈ κ²¨μΈ : S2D2κ° (i, j) λ μ A[i][j] λ§νΌ μλΆμ μΆκ°νλ€(A λ°°μ΄μ μ λ ₯μΌλ‘ λ°κ³ , 맀λ μ£Όλ μμ κ³ μ λμ΄μμ)
κ²¨μΈ -> κ°μ -> μ¬λ¦ -> λ΄ μμΌλ‘ ꡬνμ΄ μ½κΈ° λλ¬Έμ, κ³μ μ λ°λ μμΌλ‘ ꡬνμ μ§ννλ€.
μ¬κΈ°μ μμμΌ νλ κ²..
1. νλμ μΉΈμ μ¬λ¬ 그루μ λλ¬΄κ° μμ μ μκΈ° λλ¬Έμ, μ΄λ¦° λ무λΆν° μλΆμ λ¨Ήλλ€λ μ‘°κ±΄μ΄ μλ€.
κ·Έλμ??μ¬κΈ°μ?? 1λ λ§λ€ λ§€λ² sortλ₯Ό νκ³ μμΌλ©΄?? μκ°μ΄κ³Όκ° λλ€.
βοΈ λ§€λ μλΆμ λ¨Ήλ λͺ¨λ λλ¬΄κ° 1μ΄μ© κ³ μ μ μΌλ‘ λμ΄λ₯Ό λ¨Ήμ
βοΈ μλ‘ μμ±λλ λ무λ€μ λμ΄κ° 1μ΄
β‘οΈ λ°λΌμ μλ‘ μμ±λλ λ무λ₯Ό νμνλ λ°°μ΄μ 'μμͺ½μ' λ°°μΉν΄μ£Όλ©΄, 맀λ μ λ ¬ν νμκ° μλ€.
λ°λΌμ μ΄λ°μ λ¨ νλ²λ§ μ λ ¬ν΄μ£Όκ³ ,
- μμ±λλ λλ¬΄λ€ λ°λ‘ μ μ
- κΈ°μ‘΄ λ무λ€μ λλ©΄μ μ£½μ λ무 ꡬλ³
- μ΄μλ¨μ λ무λ€μ μ λ무 λ°°μ΄μ μ μ₯
- μλ‘μ΄ λ무 λ°°μ΄μ κΈ°μ‘΄μ λ무 λ°°μ΄μ λ§μ νκΈ°
μμΌλ‘ μ§ννλ©΄ λ΄μ¬λ¦κ°μ λμ λ!
2. vector<vector<int>> vs vector<Struct>
κ°μ₯ κ³ μνκ³ μ΄ν΄μλλ λΆλΆ..
κ²°λ‘ λΆν° λ§νμλ©΄ 'κ³ μ λ' κΈΈμ΄μ μλ£ λ°°μ΄μ λν΄μλ vector<int> λ³΄λ€ κ΅¬μ‘°μ²΄λ₯Ό μ μνλ κ²μ΄ ν¨μ¬ ν¨μ¨μ μ΄λΌλ κ².
vector<vector<int> > tree(N, vector<int>(3));
vectorλ μΈμ κ·Έλν ꡬμΆκ³Ό κ°μ΄ 'κ° νμ ν¬κΈ°κ° κ°λ³μ μΌ μ μλ κ²½μ°'μ μ ν©νλ€.
κ° νμ vectorλ€μ΄ λ³λμ vectorλ‘ κ΄λ¦¬λκΈ° λλ¬Έμ, κ° νμ λν΄ μΆκ°μ μΈ λ©λͺ¨λ¦¬ μ€λ²ν€λκ° λ°μν μ μλ€. μ¦, κ° νμ λν λ©λͺ¨λ¦¬ μ κ·Όμ΄ λΆμ°λμ΄ μμ΄ vector<struct>μ λΉν΄ λ©λͺ¨λ¦¬ μ κ·Ό μλκ° λ릴 μ μλ€.
struct Tree {
int r, c, age;
bool operator<(const Tree &t) const {
return age < t.age;
}
};
vector<Tree> tree(N);
ꡬ쑰체λ μ©λ°°μ΄μ²λΌ λͺ¨λ λ°μ΄ν°λ₯Ό μ°μμ μΈ λ©λͺ¨λ¦¬ λΈλ‘μ μ μ₯νλ―λ‘ λ©λͺ¨λ¦¬ μ€λ²ν€λλ μ κ³ λ©λͺ¨λ¦¬ μ κ·Όμλκ° λΉ λ₯΄λ€.
ꡬνμ 볡μ‘μ±λ μκ³ , κ° νμ ν¬κΈ°κ° ꡬ쑰체 λ΄ λ³μλ§νΌ κ³ μ λμ΄ μκΈ° λλ¬Έμ κ°λ³μ μΈ ν¬κΈ°μ νμ μ²λ¦¬νκΈ° μ ν©νμ§ μμ§λ§,
μ΄λ° λ¬Έμ μ²λΌ μ μν λ³μκ° κ³ μ λμ΄μλ κ²½μ°, ꡬ쑰체 λ°°μ΄μ μ μνλ κ²μ΄ ν¨μ¬ λ ν¨μ¨μ μΈ μ±λ₯μ λΌ μ μλ€.
10 1 1000
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
1 1 1
μ λ¨Ήμλ 1000λ μμ ..

μ€νμκ° μ°¨μ΄λ₯Ό λ΄λ.. κ±°μ 6λ°° μ΄μ μ°¨μ΄λλ κ²μ λ³Ό μ μλ€.
μ½λ
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, M, K;
struct Tree {
int r, c, age;
bool operator<(const Tree &t) const {
return age < t.age;
}
};
vector<vector<int> > board;
vector<vector<int> > A;
vector<Tree> tree;
int dy[] = { 1, 0, -1, 0, 1, -1, 1, -1 }; // 8λ°©ν₯ λ무 μ€κ³
int dx[] = { 0, 1, 0, -1, 1, 1, -1, -1 };
void Four_seasons();
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M >> K;
board.resize(N + 1, vector<int> (N + 1, 5)); // (r, c)λ (1, 1)λΆν° μμ
A.resize(N + 1, vector<int> (N + 1, 0)); // (r, c)λ (1, 1)λΆν° μμ
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
cin >> A[i][j];
for(int i = 0; i < M; i++) {
int r, c, age;
cin >> r >> c >> age;
tree.push_back({r, c, age});
}
sort(tree.begin(), tree.end());
Four_seasons();
return 0;
}
void Four_seasons() {
for(int year = 0; year < K; year++) {
// Spring -> Autumn
vector<Tree> new_tree;
int tree_size = tree.size();
for(int i = 0; i < tree_size; i++) {
if(tree[i].age == 0) continue;
int r = tree[i].r, c = tree[i].c;
if(board[r][c] >= tree[i].age) {
board[r][c] -= tree[i].age;
tree[i].age++;
if(tree[i].age % 5 == 0) {
for(int j = 0; j < 8; j++) {
if(r + dy[j] <= 0 || r + dy[j] > N || c + dx[j] <= 0 || c + dx[j] > N) continue;
new_tree.push_back({r + dy[j], c + dx[j], 1});
}
}
}
else {
tree[i].age *= -1;
}
}
for(int i = 0; i < tree_size; i++) {
if(tree[i].age < 0) {
int r = tree[i].r, c = tree[i].c, age = tree[i].age * -1;
board[r][c] += age / 2;
}
else {
new_tree.push_back(tree[i]);
}
}
// Winter
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
board[i][j] += A[i][j];
tree.swap(new_tree);
}
cout << tree.size() << "\n";
}
'μ½λ©ν μ€νΈ μ€λΉ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1325λ²: ν¨μ¨μ μΈ ν΄νΉ - C++ (0) | 2022.08.17 |
---|---|
[λ°±μ€] 1309λ²: λλ¬Όμ - C++ (0) | 2022.07.26 |
[λ°±μ€] 2302λ²: κ·Ήμ₯ μ’μ - C++ (0) | 2022.07.21 |
[λ°±μ€] 1904: 01νμΌ - C++ (0) | 2022.07.15 |
[λ°±μ€] 2240λ²: μλλ무 - C++ (0) | 2022.07.14 |