[백준]SDS
string.h 활용법
char a[100];
scanf(" %s",a);
int n = strlen(a); // "test" 입력
-> n=4
int comp = strcmp(a, "test");
-> comp = 0 (0이 아니면 다른 것)
comparator 예시
#include<stdio.h>
#include<algorithm>
using namespace std;
bool comp(const int &a, const int &b)
{
return a > b;// 내림차순의 경우. 오름차순은 기본값이라 comp함수가 필요 없으나, a < b로 부등호 방향을 바꿔주면 된다.
}
int a[11] = { 0,5,2,4,1,6,8,3,10,7,9 };
int n=10;
int main()
{
int i;
for (i = 1; i <= n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
sort(a + 1, a + 1 + n, comp);
for (i = 1; i <= n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
파스칼의 삼각형
#include<stdio.h>
int dp[1001][1001],n,m;
int main()
{
int i,j;
scanf("%d%d",&n,&m);
dp[0][0]=1;
for(i=1;i<=n;i++)
{
dp[i][0]=1;
for(j=1;j<=i;j++)
{
dp[i][j] = dp[i-1][j-1]+dp[i-1][j];
dp[i][j]%=10007;
}
}
printf("%d",dp[n][m]);
return 0;
}
#include<stdio.h>
int n, m;
int d[1001][1001];
int combination(int n, int k)
{
if (k == 0 || n == k)return 1;
if (d[n][k] != 0) return d[n][k];
return d[n][k] = (combination(n - 1, k) + combination(n - 1, k - 1)) % 10007;
}
int main()
{
scanf("%d%d", &n, &m);
return 0;
}
인접 리스트 sample code
#include<vector>
#include<stdio.h>
using namespace std;
int n, m;
int a, b;
//만약 가중치가 들어간다?
// vector<pair<int,int> > adjlist[320001];
vector<int> adjlist[32001];
int main()
{
scanf("%d%d", &n, &m);
for (int i = 1; i <= m; i++)
{
scanf("%d%d", &a, &b);
// 방향성이 있는 그래프 a->b
adjlist[a].push_back(b);
// if 방향성이 없는 그래프. a->b b->a
// adjlist[a].push_back(b);
// adjlist[b].push_back(a);
}
for (int i = 1; i <= n; i++)
{
// indegree가 0인 정점 x
int x=3;
for (int j = 0; j < adjlist[x].size(); j++)
{
int y = adjlist[x][j];
}
for (int y : adjlist[x])
{
}
}
return 0;
}
‘25년 상반기 대학생 알고리즘 특강_3반(B201)
알고리즘 기초
시간복잡도
자료구조
정수론
조합론
그래프1
그래프2
동적계획법1
동적계획법2
(25.02.03~25.02.14)
댓글남기기