PS 138

백준 2667 단지번호붙이기(c++)

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net (스택 쓰지 않고 풀기) #include #include #include #include using namespace std; int mov[4][2] = {{-1,0},{1,0},{0,1},{0,-1}}; bool check[26][26]; int Board[26][26]; vectorrooms; int cnt=0; int n; string s; void dfs(int x,int y) { for(..

DFS

DFS(Depth First Search) 그래프 순회 방법 중 하나(깊이 우선 탐색) 시작 노드에서 깊이가 커지는 방향으로 탐색을 진행하여 더 이상 방문할 인접 노드가 없는 경우 이전 노드가 돌아가서, 다시 깊이 우선 탐색을 반복하게 됨. 재귀 호출을 통해 구현 1. 입력 5(노드의 개수) 6(간선의 개수) 노드의 쌍 0 1 0 2 1 3 1 4 2 4 3 4 (각 쌍들 사이에 간선이 존재) 출력 0 1 3 4 2 #include #include using namespace std; #define max 10 int n, e; int graph[max][max]; bool visited[max]; void dfs(int node) { visited[node] = true; coutu>>v; graph[..

백준 2294 동전 2(c++)

https://www.acmicpc.net/problem/2294 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주 www.acmicpc.net #include #include #include using namespace std; int main() { int n,k; cin>>n>>k; vectorv(n); vectordp(k+1); dp[0]=0; for(int i=1;iv[i]; } sort(v.begin(),v.end(),greater()); for(int i=0;i

백준 2293 동전 2(c++)

https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net #include #include #include using namespace std; int main() { int n,k; cin>>n>>k; vectorv(n); vectordp(k+1); for(int i=0;i>v[i]; } dp[0]=1; for(int i=0;i

백준 1958 LCS 3(c++)

https://www.acmicpc.net/problem/1958 1958번: LCS 3 첫 줄에는 첫 번째 문자열이, 둘째 줄에는 두 번째 문자열이, 셋째 줄에는 세 번째 문자열이 주어진다. 각 문자열은 알파벳 소문자로 이루어져 있고, 길이는 100보다 작거나 같다. www.acmicpc.net #include #include #include #include using namespace std; int main() { vectordp(101,vector(101,vector(101,0))); string s1,s2,s3; cin>>s1>>s2>>s3; for(int i=1;i

백준 5582 공통 부분 문자열(c++)

https://www.acmicpc.net/problem/5582 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net #include #include #include #include using namespace std; int main() { string s1,s2; cin>>s1>>s2; vectordp(4001,vector(4001,0)); int result = 0; for(int i=1;i

백준 9251 LCS(c++)

https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); vectorv(1001,vector(1001,0)); string s1,s2; cin>>s1>>s2; for(in..

백준 1339 단어 수학(c++)

https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net #include #include #include #include #include using namespace std; int main() { string s; int n; cin>>n; vectoralpha(26); for(int i=0;i>s; for(int j=0;j

백준 1781 컵라면(c++)

https://www.acmicpc.net/problem/1781 1781번: 컵라면 상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라 www.acmicpc.net #include #include #include #include #include #include using namespace std; int main() { int n; cin>>n; vectorv; priority_queuepq; for(int i=0;i>a>>b; v.push_back(make_pair(a,b)); } sort(v.begin(),v.end()); long long sum = 0; for..