[λ°±μ€,c++] 10703λ² - μ μ±
λ¬Έμ
10703λ²: μ μ±
μκ³ νΉμ΄ν λͺ¨μμ μ μ± μ¬μ§μ΄ μΈν°λ·μ μ¬λΌμλ€. μ¬μ§μλ λ§€μ° λμ κ³³μμ λ¨μ΄μ§κ³ μλ μ μ±μ΄ ν곡μ μ°ν μμλ€. μ μ±μ΄ λ¨μ΄μ§κ³ λ λ€μ μ¬μ§λ μμμ§λ§ μνκΉκ²λ μμ€λΌλ²λ €
www.acmicpc.net
μ½λ
#include <iostream>
using namespace std;
int N, M;
char map[3001][3001];
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N>>M;;
for(int i=0; i<N; i++){
string inp; cin>>inp;
for(int k=0; k<M; k++){
map[i][k] = inp[k];
}
}
int move_cnt = 1e9;
for(int i=0; i<M; i++){ // λͺ μΉΈ μ΄λν μ§ μ°ΎκΈ°
int meteor = 0;
int ground = 0;
for(int k=0; k<N; k++){
if(map[k][i] == 'X') meteor = k + 1;
if(map[k][i] == '#'){
ground = k + 1;
break;
}
}
if(meteor !=0 && ground != 0){
move_cnt = min(move_cnt, ground - meteor - 1);
}
}
for(int i=0; i<M; i++){ // μ μ± μ΄λ
for(int k=N-1; k>=0; k--){
if(map[k][i] == 'X'){
map[k+move_cnt][i] = 'X';
map[k][i] = '.';
}
}
}
for(int i=0; i<N; i++){ // μΆλ ₯
for(int k=0; k<M; k++){
cout<<map[i][k];
}
cout<<'\n';
}
}
νμ΄
λ¬Έμ λ₯Ό λ¨Όμ μ΄ν΄ν΄ 보μλ©΄ μΌμͺ½ μ λ ₯μμ x(μ μ±) λν μ΄λ₯Ό λ (#) μκΉμ§ λ΄λ¦΄ μ μμ λ§νΌ μ΅λν λ΄λ €μΌ ν©λλ€.
λ°λΌμ κ°μ₯ λ μ κ·Όμ ν X(μ μ±)μ μ°Ύμμ ν΄λΉ μ μ±κ³Ό λ κ³Όμ 거리λ§νΌ μ 체 μ μ±μ λ΄λ¦¬λ©΄ λ©λλ€.
μ μ λ ₯ κ°μ κ²½μ° (1, 3)μ μ μ±κ³Ό (3, 3)μ λ κ³Όμ κ±°λ¦¬μ°¨κ° μ μΌ μκ³ , 거리 μ°¨μ΄λ ν μΉΈμ λλ€. λ°λΌμ μ 체 μ μ±μ μλλ‘ ν μΉΈ λ΄λ¦¬λ©΄ λ©λλ€.