끄적끄적 코딩
article thumbnail
[C++] 백준 9012번 괄호
알고리즘 2019. 9. 4. 19:06

스택 문제입니다. 괄호는 항상 '(' 와 ')'으로 이루어지며 한 쌍이 되어야 합니다. ) (와 같이 반대로 나와서는 안됩니다. 스택에 한글자씩 push해줍니다. 그리고 ')' 가 나왔을 때 스택의 top부분이 '('인지 확인합니다. 맞으면 '('를 pop()해줍니다. 이는 ')'가 나올때마다 한쌍씩 제거해주는 방식입니다. 그리고 모든 글자를 전부 탐색한 후 empty()를 확인해서 남아 있다면 쌍이 맞지 않는 경우이므로 틀렸다고 판단합니다. #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; bool flag; string str; stack s; cin >> n..

article thumbnail
[C++] 백준 2164번 카드2
알고리즘 2019. 9. 4. 12:13

큐 문제입니다. 1. 1~n까지의 수를 큐에 넣습니다. 2. q.pop(), 먼저 들어온 것을 제거합니다. 3. q.push(q.front()), 앞에 있는 것을 뒤에 넣습니다. 4. q.pop(), 앞에 있는 것을 제거합니다.(뒤로 옮긴 상태) 5. q.size()가 1이 될때까지 2~4 반복 6. q.front() 출력 #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; queue q; cin >> n; for (int i = 1; i 1) { q.pop(); q.push(q.front()); q.pop(); } cout

article thumbnail
[C++] 백준 10773번 제로
알고리즘 2019. 9. 4. 12:06

스택 문제입니다. 0을 누르면 pop하고 그 외에는 push를 해줍니다. 스택에 있는 수들을 전부 더해서 출력합니다. #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; int num; int sum = 0; stack s; cin >> n; for (int i = 0; i > num; if (num == 0) { s.pop(); } else { s.push(num); } } for (int i = 0; !s.empty(); ++i) { sum += s.top(); s.pop(); } cout

article thumbnail
[C++] 백준 2004번 조합 0의 개수
알고리즘 2019. 9. 4. 11:48

nCm에서 끝자리 0의 개수를 찾는 문제입니다. 0의 개수는 소인수 2와 5로 찾을 수 있습니다. 소인수 2가 5개고 5가 2개면 0의 개수는 2개입니다. 1. n!에 대한 2와 5의 소인수 개수 2. (n - m)!에 대한 2와 5의 소인수 개수 3. m!에 대한 2와 5의 소인수 개수 (1.) - (2.) - (3.)을 해주면 2와 5의 개수를 구할 수 있습니다. 여기서 2와 5중 적은 것을 출력해줍니다. 소인수를 구하는 법은 x를 n으로 나눔 x를 n^2로 나눔, x를 n^3로 나눔, ..... x를 n^m-1로 나눔 x를 n^m로 나눔 나눈 값들을 전부 더하면 소인수의개수를 구할 수 있습니다. #include #include #include #include #include using namespa..

article thumbnail
[C++] 백준 1676번 팩토리얼 0의 개수
알고리즘 2019. 9. 4. 00:02

팩토리얼을 계산할때 0이 나오는 경우를 구하는 문제입니다. N은 500보다 작거나 같습니다. 2와 5의개수를 세어주면 되는데 5의 개수가 더 적기 때문에 5를 셉니다. 5로 나누어 떨어지는 경우 카운트를 증가합니다. 그리고 25는 100을 만들 수 있기에 25로 나누어떨어지는 경우도 세며, 125도 250, 500을 만들 수 있기에 125로 나누어떨어지는 경우도 세줍니다. #include #include using namespace std; int main(int argc, char *argv[]) { int n; int count = 0; cin >> n; for (int i = 1; i

article thumbnail
[C++] 백준 9375번 패션왕 신해빈
알고리즘 2019. 9. 3. 18:08

옷을 입을 수 있는 경우의 수를 구하는 문제입니다. 같은 부위의 옷은 하나만 입거나 벗을 수 있고, 전부다 벗을 수는 없습니다. 입력받은 부위를 벡터에 저장하고 개수를 입력해주었습니다. 그리고 입력받은 개수를 통해서 부위별 옷의 개수를 세서 경우의 수를 구했습니다. (x의 개수 + 1) * (y의 개수 + 1) * .... (n의 개수 + 1) - 1 +1은 벗은 경우이며, 마지막 -1은 전부 벗은 경우를 제외한 것입니다. #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int ts; int n; int result; int flag; string s; vector v; c..

article thumbnail
[C++] 백준 11050번 이항 계수 1
알고리즘 2019. 9. 3. 17:04

이항 계수 문제입니다. 이항계수는 다음의 공식으로 나타낼 수 있습니다. (N-0) * (N-1) * (N-2) * .... * (N-K+1) ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ (K-0) * (K-1) * (K-2) * .... * (K-K+1) 예제 5 2의 경우 ( 5 * 4 ) / ( 2 * 1 )로 나타낼 수 있습니다. #include #include #include using namespace std; int main(int argc, char *argv[]) { int N, K; int num = 1; int div = 1; cin >> N; cin >> K; for (int i = 0; i < K; ++i) { num *= N - i; div *= K - i; } cout

article thumbnail
[C++] 백준 3036번 링
알고리즘 2019. 9. 3. 16:42

첫번째 수를 n번째 수로 나누었을 때 기약분수 형태로 나타내는 문제입니다. 첫번째 수와 n번째 수의 최대공약수를 구해서 값을 각각 최대공약수로 나눠서 출력했습니다. #include #include #include using namespace std; int GCD(int a, int b) { if (a % b == 0) { return b; } return GCD(b, a % b); } int main(int argc, char *argv[]) { int n; int div; int arr[110]; cin >> n; memset(arr, 0, sizeof(arr)); for (int i = 0; i > arr[i]; } for (int i = 1; i < n; ++i) {..

검색 태그