본문 바로가기
728x90

알고리즘46

백준 1182번 부분수열의 합(C++) 알고리즘을 풀며 반성.. 문제1182번: 부분수열의 합https://www.acmicpc.net/problem/1182정답 코드#include using namespace std; int n,s; int cnt; int num[21]; int ret[21]; // 결과를 담을 배열 voidfunc(int k,int tot) { if (k == n) { if (tot == s) cnt++; return ; } func(k+1,tot); func(k+1,tot+num[k]); } int main() { ios:: sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n>>s; for (int i=0;i > num[i]; func(0,0); if ( s== 0 ) cnt.. 2023. 1. 16.
백준 1189번 컴백홈 dfs(C++) 문제정답 코드#include #include #include #include int dx[]={-1,0,1,0}; int dy[]={0,1,0,-1}; using namespace std; int r,c,k; int cnt =0; // voidprint_map(vector arr) // { // for (int i=0;i k; vector arr(r,vector(c,0)); for (int i=0;i > s; for (int j=0; j 2023. 1. 10.
백준 1325번 효율적인 해킹(C++) 문제정답 코드#include #include #include #include #include using namespace std; int compu_num,n; vector compu[10001]; int result[10001]; int vis[10001]; int maxi; int dfs(int a) { vis[a] = 1; int ret = 1; for (int k : compu[a]) { if (vis[k]) continue; ret +=dfs(k); } return (ret); } int main() { ios:: sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> compu_num >> n; for (int i=0;i < n;i++) { int down.. 2023. 1. 9.
백준 2636번 치즈(C++) 문제 정답 코드#include #include #include #include #include using namespace std; int n,m; #define X second #define Y first /* 입력 -> 변경 맵과 이전 백업맵 2개로 생김 이전 백업맵에서 bfs를 하는데 4방향 탐색중 0이 있다면 그 부분의 변경맵을 0으로 변경 그렇게 쭉 한바퀴를 다 돌고 나면 변경 맵을 검사해서 전부다 0인지 확인 전부다 0이면 이전 백업을 출력 아니라면 백업을 바꾼 맵으로 바꾸고 다시 함수 시작. */ const int dx[] = {0,1,0,-1}; const int dy[] = {1,0,-1,0}; int check_done(vector ar) { for (int i=0;i < n;i++) .. 2023. 1. 8.
백준 14502번 연구소 (C++) 문제정답 코드#include #include #include #include #include #include using namespace std; const int dx[] = {0,1,0,-1}; const int dy[] = {1,0,-1,0}; int n,m; int do_find(vector to_find) {//맵이 고정됐으니까 이제 각 값들에 대해서 안전영역이 몇개인지 찾기. vector vis(n,vector(m,0)); for (int i=0;i < n; i++) { for (int j =0;j < m;j++) { if (to_find[i][j] == 2 && vis[i][j] == 0) { vis[i][j] = 1; queue Q; Q.push({i,j});//y,x while (!Q.e.. 2023. 1. 8.
백준 9012번 괄호 (C++) (스택활용) 문제정답 코드#include #include #include #include using namespace std; int main() { int n; cin >> n; for (int i=0;i > s; for (auto it : s) { if (it == ')') { if (st.empty()) { cout 2023. 1. 8.
백준 1436번 영화감독 숌(C++) 문제 정답 코드 #include using namespace std; #define ll long long int main() { ll n; cin >>n; ll go = 665; int i =0; int tmp; while(i 2023. 1. 7.
백준 2852번 NBA 농구(C++) 문제정답 코드#include #include #include #include using namespace std; string bef_time; string make_ret_time(string ret, string bef,string now) { char arr[6]; arr[0] = now[0] -bef[0] + '0'; arr[1] = now[1] - bef[1] + '0'; arr[2] = ':'; arr[3] = now[3] - bef[3] + '0'; arr[4] = now[4] -bef[4] + '0'; if (arr[4] input_num >> time; if (input_num == 1) first_score++; else second_score++; if (first_score > se.. 2023. 1. 7.
백준 3474번 교수가 된 현우(C++) 문제정답 코드#include #include #include #include using namespace std; int t_n; int f_n; int main() { ios:: sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; int a; for(int i = 0; i > a; int ret2 = 0, ret5 = 0; for(int j = 2; j num; arr.push_back(num); backup.push_back(num); } sort(arr.begin(),arr.end()); int num = arr[0]; int tnum = num; while (num) { if (tnum%4 == 0) { t_n.. 2023. 1. 7.
728x90