-
[BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(๋ฏธ์ธ๋จผ์ง ์๋ !)SW Test/BaekJoon 2020. 4. 19. 17:08๋ฐ์ํ
- ์ด ๋ฌธ์ ๋ c++๋ก ํ์ด๋ฅผ ์์ฑํ์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
#include<iostream> using namespace std; int r,c,t; int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; int result=0; bool inside(int y,int x){ return 0<=y && y<r && 0<=x && x<c; } void diffusion(int arr[50][50]){ int row; // ์ฒซ ๋ฏธ์ธ๋จผ์ง ์์ row for(int i=0;i<r;i++){ if(arr[i][0]==-1){ row=i; break; } } for(int j=row-1;j>0;j--){ arr[j][0]=arr[j-1][0]; } for(int j=0;j<c-1;j++){ arr[0][j]=arr[0][j+1]; } for(int j=0;j<row;j++){ arr[j][c-1]=arr[j+1][c-1]; } for(int j=c-1;j>1;j--){ arr[row][j]=arr[row][j-1]; } arr[row][1]=0; row++; for(int j=row+1;j<r-1;j++){ arr[j][0]=arr[j+1][0]; } for(int j=0;j<c-1;j++){ arr[r-1][j]=arr[r-1][j+1]; } for(int j=r-1;j>row;j--){ arr[j][c-1]=arr[j-1][c-1]; } for(int j=c-1;j>1;j--){ arr[row][j]=arr[row][j-1]; } arr[row][1]=0; } int main(){ int arr[50][50]; cin>>r>>c>>t; for(int i=0;i<r;i++){ for(int j=0;j<c;j++){ cin>>arr[i][j]; } } for(int test=1;test<=t;test++){ // ํ์ฐ๋๋ ๋ฏธ์ธ๋จผ์ง ์ int temp[50][50]={0}; for(int y=0;y<r;y++){ for(int x=0;x<c;x++){ if(arr[y][x]>0){ int cnt=0; int num=arr[y][x]/5; // ์ํ์ข์ฐ ํ์ for(int k=0;k<4;k++){ int dy=y+dir[k][0]; int dx=x+dir[k][1]; if(inside(dy,dx)){ if(arr[dy][dx]!=-1){ cnt++; temp[dy][dx]+=num; // ํ์ฐ ๋ฏธ์ธ๋จผ์ง ์ ์ถ๊ฐ } } } arr[y][x]-=(num*cnt); // ๋ฏธ์ธ๋จผ์ง ์ ์ค์ด๊ธฐ } } } // ์๋ ๋ฏธ์ธ๋จผ์ง + ํ์ฐ ๋ฏธ์ธ๋จผ์ง for(int y=0;y<r;y++){ for(int x=0;x<c;x++){ arr[y][x]+=temp[y][x]; } } // ๊ณต๊ธฐ์ฒญ์ ๊ธฐ ์์ diffusion(arr); } for(int i=0;i<r;i++){ for(int j=0;j<c;j++){ if(arr[i][j]>0){ result+=arr[i][j]; } } } cout<<result; }
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ฐ์ํ'SW Test > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(ํฑ๋๋ฐํด) (0) 2020.04.21 [BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ) (1) 2020.04.20 [BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(๋ก๋ด ์ฒญ์๊ธฐ) (2) 2020.04.20 [BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(๊ฒฝ์ฌ๋ก) (0) 2020.04.19 [Baekjoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(์ฐ๊ตฌ์) (0) 2020.04.19