본문 바로가기

전체 글

(2246)
(C++) - 백준(BOJ) 10828번 : 스택(stack) 답 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스택을 써보는 기초문제였습니다 Code #include using namespace std; int n; stack st; int main(){ cin >> n; while(n--){ string op; cin >> op; if(op == "push"){ int x; cin >> x; st.push(x); } else if(op == "pop"){ if(st.size()) cout
(C++) - 백준(BOJ) 2747번 : 피보나치 수열 답 https://www.acmicpc.net/problem/2747 2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된�� www.acmicpc.net 간단한 재귀함수 또는 for문으로 작성할 수 있는 dp문제입니다. Code : 1. for문 : 1234567891011121314151617#include using namespace std;int main(){int num;cin >> num; //방 개수int *arr = new int [num+1];arr[0] = 0;arr[1] = 1;if(num =..
(C++) - 백준(BOJ) 2748번 : 피보나치 수 2 https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 대표적인 dp문제였습니다. Code 1. Top down dp #include #define ll long long using namespace std; ll fibo[91], n; ll dp(int num){ if(num == 1 || num == 2) return 1; ll &ret = fibo[num]; if(ret) return ret; ret = 0; ..
(C++) - 백준(BOJ) 10845번 : 큐(queue) https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 자료구조 queue를 사용하는 문제였습니다. Code #include using namespace std; int n; queue q; int main(){ cin >> n; while(n--){ string op; cin >> op; if(op == "push"){ int x; cin >> x; q.push(x); } else if(op == "pop"){ if(q.size())..
(C++) - 백준(BOJ) 11050번 : 이항계수 1 https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 조합을 구하는 문제였습니다. 풀이방법 1. 이항정리를 이용하는 법 : nCk = n-1Ck +n-1Ck-1 2. 그냥 구하기 Code 1. 이항정리 이용 #include using namespace std; int n,k,a[11][11]; //nCk = n-1Ck + n-1Ck-1 int dp(int n, int k){ if(n == k || k == 0) return 1; int &ret = a[n][k]; if(ret) return ret; ret = dp(n-1,k..
(VIsual Studio 오류) - error LNK1168:을(를) 쓰기용으로 열 수 없습니다. 비주얼 스튜디오 환경에서 컴파일시 다음과 같은 error가 나오는 경우가 있습니다. error LNK1168:을(를) 쓰기용으로 열 수 없습니다. 이 오류는 크게 다음 3가지가 원인입니다. 1. 하나의 프로젝트에 여러 소스파일을 작성하고 있을 때 컴파일은 다 잘 되었지만, Link ( 실행파일 만드는 작업 ) 를 하다보니 이미 실행 중인 실행 파일들이 있다는 뜻입니다. 2. 소스 코드에는 입력받는 부분이 있는데 실행창에서 이를 모두 입력하지 않았을 때 ex) cin>>num처럼 어떤 코드에 num 수 만큼 입력해야하는 부분이 있을 때, 컴파일링 중 num만큼 다 입력하지 않고 실행창을 끄지 않은 채로 코드를 수정하고 다시 컴파일링을 하면 기존에 있던 실행창이 모두 입력되지 않았으므로 -> 종료가 안 되었..