본문 바로가기

Study

(52)
[백준] 4949 균형잡힌 세상 c++ #include #include #include void solveline(char *s) { char stack[102]; int idx = 0; while (*s != '\0') { char c = *s; if (c == '(' || c== '[') { stack[idx++] = c; } else if (c==')'||c==']'){ if (idx > 0 && ((stack[idx-1] == '(' && c== ')') || (stack[idx-1] == '[' && c== ']'))) { idx--; } else { printf("no\n"); return; } } s++; } if (idx != 0) { printf("no\n"); } else { printf("yes\n"); } } in..
[백준] 2004 조합 0의 개수 https://www.acmicpc.net/problem/2004 #include int aa(int n, int mod) { int count = 0; for (long long int i = mod; n / i >= 1; i *= mod) { count += n / i; } return count; } inline int minmin(int a, int b) { return a < b ? a : b; } int main() { int n, m; scanf("%d %d", &n, &m); int a, b, c, d, e, f; a = aa(n, 2); c = aa(n-m, 2); e = aa(m, 2); b = aa(n, 5); d = aa(n-m, 5); f = aa(m, 5); printf("%d\..
[백준] 1676. 팩토리얼 0의 개수 https://www.acmicpc.net/problem/1676 뒤에서부터 0이 아닌 숫자가 나올 때까지 0의 갯수를 구하는 것이다. 0이 나오는 것은 10이 곱해져있다는 것이므로 그 약수인 2와 5가 몇번 곱해지 알면 풀 수 있다. #include int d[501][2]; // 0 -> 2의개수 1 -> 5의 개수 int aa(int n, int mod) { int i = 0; while (n % mod == 0) { i++; n = n/mod;} return i; } inline int minmin(int a, int b) { return a < b ? a : b; } int main() { int n; scanf("%d", &n); for (int i = 2; i
[백준] 9375. 패션왕 신해빈 맵같은 라이브러리 안쓰고 해볼려고했는데 고생했다. https://www.acmicpc.net/problem/9375 #include int _strcmp(char * a, char * b) { int i = 0; while(a[i]) { if (a[i] != b[i]) { break; } i++; } return a[i]-b[i]; } void _strcpy(char *dst, char *src) { while((*dst++ = *src++)); } int checkDup(char g[31][21], int n, char s[21]) { for (int i = 0; i < n; i++) { if (_strcmp(g[i], s) == 0) { return i; } } return -1; } void tes..
[백준] 11051. 이항계수2 https://www.acmicpc.net/problem/11051 이항계수 성질중 파스칼법칙을 써서 구하는데 시간초과가 나서 메모이 제이션으로 최적화 시켰다. 위키피디아에 이항계수검색하고 메모이제이션 검색하면 나올 것이다. #include const int MODULO = 10007; int d[1003][1003]; // pascal's rule int binomial_coefficient(int n, int k) { if (n == k || k == 0) { return 1; }else if (d[n][k] == 0) { d[n][k] = (binomial_coefficient(n-1,k-1) + binomial_coefficient(n-1, k))%MODULO; } return d[n][k]; }..
[백준] 11050 이항계수1 https://www.acmicpc.net/problem/11050 #include int main() { double n, k; double result = 1; scanf("%lf %lf", &n, &k); for (int i = 0; i < k; i++) { result *= (n-i)/(k-i); } printf("%.0lf\n", result); }
[백준] 3036. 링 유클리드 호제법을 써서 최대공약수를 이용해서 풀었다. https://www.acmicpc.net/problem/3036 #include int GCD(int a, int b) { return a % b ? GCD(b, a%b) : b; } int main() { int n; scanf("%d", &n); int arr[102]; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (int i = 1; i < n; i++) { int gcd = GCD(arr[0], arr[i]); printf("%d/%d\n", arr[0]/gcd, arr[i]/gcd); } } 나중에 찾아보니 유클리드 호제법은 이렇게 쓰는게 더 좋은것 같더라 int gcd(int a,..
[백준] 1541. 잃어버린 괄호 https://www.acmicpc.net/problem/1541 #include int numarr[50]; char oparr[50]; int idx=0; int main() { scanf("%d", &numarr[idx++]); int re; while((re = scanf("%c%d", &oparr[idx], &numarr[idx])) == 2) { idx++; } for (int i = idx-1; i > 0; i--) { if (oparr[i] == '+') { numarr[i-1] = numarr[i]+ numarr[i-1]; numarr[i]=0; } } int result = numarr[0]; for (int i = 1; i < idx; i++) { if (oparr[i]=='-') {..