본문 바로가기

Algorithm

(2139)
(C++) - 백준(BOJ) 5585번:거스름돈 답 #include using namespace std; int main() { int num,cnt=0; cin >> num; num = 1000 - num; while (num >= 500) { cnt += num / 500; num %= 500; } while (num >= 100) { cnt += num / 100; num %= 100; } while (num >= 50) { cnt += num / 50; num %= 50; } while (num >= 10) { cnt += num / 10; num %= 10; } while (num >= 5) { cnt += num / 5; num %= 5; } while (num >= 1) { cnt += num / 1; num %= 1; } cout
(C++) - 백준(BOJ) 2583번 : 영역 구하기 #include #include #include #include using namespace std; queue q; vector dcnt(101); int la,ra,lb,rb, m, n, k, a[101][101],c[101][101], dx[] = { 0,0,-1,1 }, dy[] = { -1,1,0,0 },cnt; void BFS(int i,int j,int cnt) { q.push(make_pair(i,j)); dcnt[cnt]++; c[i][j] = 1; while (!q.empty()) { int x = q.front().first; int y = q.front().second; q.pop(); for (int i = 0; i < 4; i++)//4방향을 살펴본다 { int nx = x + ..
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 13700번:완전범죄 답 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include #include using namespace std;int N, S, D, F, B, K, cnt[100001], nb, nf, police[100001], p, c[100001];queue q;void BFS(int x){ q.push(x); while (!q.empty()) { x = q.front(); q.pop(); int nb = x - B; int nf = x + F; if (0 N >> S >> D >> F >> B >> K; for (int i = 1; i > p; police[p] = 1; } cnt[D] = -1; BFS(S);..
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 9084번:동전 답 1234567891011121314151617181920212223242526272829#include #include using namespace std;//d[i] = i번째 동전으로 m원을 만들 수 있는 경우의 수//d[i] = d[coin[j]]++//d[i] += d[i-a[j]] int coin[21],coinN, T, N, M,d[10001];int main() { cin >> T; while (T--) { cin >> N; memset(coin, 0, sizeof(coin));//동전 초기화 memset(d, 0, sizeof(d)); for (int j = 1; j > coin[j];//동전의 가치 입력 cin >> M;//만들어야 하는 금액 for (int i = 1; i
(C++) - 백준(BOJ)코딩 2056번:작업 답 www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net Code #include #include #include using namespace std; int n,t[10001],ind[10001],minTime[10001],workn,pwork,ans; vector a[10001]; int main() { queue q; cin >> n; for (int i = 1; i > t[i]; cin >> workn; for (int j = 0; j < workn;..
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1766번:문제집 답 123456789101112131415161718192021222324252627282930313233343536#include #include #include #include using namespace std;int N, M,u,v,ind[32001];vector a[32001];priority_queue q;int main() { cin >> N >> M; for (int i = 1; i > u >> v; a[u].push_back(v); ind[v]++; } for (int i = 1; i
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 2294번:동전2 답 //d[i] = i원을 만드는데 필요한 최소 동전의 개수//d[i] = d[i-a[j]]+ 1 (d[i-a[j]] !=-1 : d[i-a[j]]==-1라면 애초에 이 값을 만들수가 없다는 뜻이므로 -1이면 안된다)12345678910111213141516171819#include #include using namespace std;int n,k, a[101], d[100001],ans=-1;int main() { cin >> n >> k; for (int i = 1; i > a[i]; } for (int i = 1; i
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 2293번:동전1 답 D[i][j] = i개의 동전을 활용하여 j원을 만드는 경우의 수 1.A[i]를 사용하는 경우 - > A[i-1]까지의 동전을 사용하여 j-A[i]원을 만들어야함 : D[i][j] += D[i-1][j-A[i]] 2.A[j]를 사용하지 않는 경우 - > A[i-1]까지의 동전을 사용하여 j원을 만들어야함 : D[i][j] += D[i-1][j]D[i] += D[i-1][j-A[i]] + D[i-1][j] 이는 1+1+2, 2+1+1, 1+2+1를 모두 다른 경우로 친다.그러므로 이를 막기 위해 D[i] += D[i-A[j]]1234567891011121314151617#include using namespace std;int n, k, a[101], d[10001];int main() { cin >> n..