/*
#include<stdio.h>
#include<string.h>
#define SIZE 100
long long int stack[SIZE]= {};
int top=-1;
void push(int data)
{
top++;
stack[top]=data;
}
int pop()
{
return stack[top--];
}
int main()
{
char str[200]= {};
int i, j;
int num=0;
gets(str);
for(i=0; str[i]!=NULL; i++)
{
if('0'<=str[i] && str[i]<='9')
{
num=num*10+str[i]-'0';
if(str[i+1]==' ')
{
push(num);
num=0;
}
}
else if(str[i]!=' ')
{
int a = pop();
int b = pop();
if(str[i]=='+')
{
push(b+a);
}
else if(str[i]=='*')
{
push(b*a);
}
else if(str[i]=='-')
{
push(b-a);
}
}
}
printf("%d", pop());
}
homework
1452 퀵정렬 복습
3014 기존 정렬방법 (x)
메모이제이션 (o)
#include<stdio.h>
int a[26][26]= {};
int k, num=0;
void dfs(int x, int y) // a[x][y]에서 dfs
{
num++;
a[x][y]=-1;
if(x+1<k && a[x+1][y]==1)
dfs(x+1,y);
if(x-1>=0 && a[x-1][y]==1)
dfs(x-1, y);
if(y+1<k && a[x][y+1]==1)
dfs(x, y+1);
if(y-1>=0 && a[x][y-1]==1)
dfs(x, y-1);
}
int main()
{
int i, j, n=0, a1[100], temp;
scanf("%d", &k);
for(i=0; i<k; i++)
{
for(j=0; j<k; j++)
scanf("%1d", &a[i][j]);
}
for(i=0; i<k; i++)
{
for(j=0; j<k; j++)
{
if(a[i][j]==1)
{
num=0;
dfs(i,j);
n++;
a1[n]=num;
}
}
}
printf("%d\n", n);
for(i=1; i<=n; i++)
{
for(j=1; j<=n-i; j++)
{
if (a1[j] > a1[j+1])
{
temp = a1[j];
a1[j] = a1[j+1];
a1[j+1] = temp;
}
}
}
for(i=1; i<=n; i++)
{
printf("%d\n", a1[i]);
}
}
4024
2605
4572
#include<stdio.h>
char a[100][100];
int w, h;
void dfs(int x, int y) // a[x][y]에서 dfs
{
if(x>=h || x<0 || y<0 || y>=w || a[x][y]!='L') return ;
a[x][y]=-1;
dfs(x+1,y);
dfs(x-1, y);
dfs(x, y+1);
dfs(x, y-1);
dfs(x+1,y+1);
dfs(x-1, y+1);
dfs(x+1, y-1);
dfs(x-1, y-1);
}
int main()
{
int i, j, n=0;
scanf("%d %d", &w, &h);
for(i=0; i<h; i++)
{
for(j=0; j<w; j++)
{
scanf(" %c", &a[i][j]);
}
}
for(i=0; i<h; i++)
{
for(j=0; j<w; j++)
{
if(a[i][j]=='L')
{
dfs(i,j);
n++;
}
}
}
printf("%d", n);
}
#include<stdio.h>
int a[8][8]={}, n;
void dfs(int x, int y, int c)
{
if(x>=7 || x<0 || y<0 || y>=7 || a[x][y]!=c) return ;
n++;
a[x][y]=-1;
dfs(x+1, y, c);
dfs(x-1, y, c);
dfs(x, y+1, c);
dfs(x, y-1, c);
}
int main()
{
int i, j, num=0;
for(i=0; i<7; i++)
{
for(j=0; j<7; j++)
{
scanf("%d", &a[i][j]);
}
}
for(i=0; i<7; i++)
{
for(j=0; j<7; j++)
{
if(a[i][j]!=-1)
{
n=0;
dfs(i, j, a[i][j]);
if(n>=3)
num++;
}
}
}
printf("%d", num);
}
*/
#include<stdio.h>
int a[100][100]= {};
void dfs(int x, int y, int c)
{
if(x>=7 || x<0 || y<0 || y>=7 || a[x][y]!=c)
return ;
a[x][y]=-1;
dfs(x+1, y, c);
dfs(x-1, y, c);
dfs(x, y+1, c);
dfs(x, y-1, c);
}
int main()
{
int i, j, num=0, m, n,k;
scanf("%d %d %d", &m, &n, &k)
for(int z=0; z<k; z++)
{
for(i=0; i<7; i++)
{
for(j=0; j<7; j++)
{
a[i][j]
}
}
}
for(i=0; i<7; i++)
{
for(j=0; j<7; j++)
{
if(a[i][j]!=-1)
{
n=0;
dfs(i, j, a[i][j]);
if(n>=3)
num++;
}
}
}
printf("%d", num);
}