본문 바로가기

Algorithm159

#2606 바이러스 # 문제 # 입력 및 출력 # 풀이 BFS, DFS 둘 다 가능한 것 같아서 두가지 방법으로 풀어봄 1) BFS // BFS #include #include using namespace std; int connect[101][101]; int visit[101]; queue q; int main() { int n, m, s, e, cnt = 0; cin >> n >> m; for (int i = 0; i > s >> e; connect[s][e] = 1; connect[e][s] = 1; } q.push(1); visit[1] = 1; while (!q.empty()) { int t = q.front(); for (int i = 1; i m; for (int i = 0; i.. 2022. 6. 3.
#1339 단어 수학 # 문제 # 입력 및 출력 # 풀이 처음에 생각한 풀이는 길이가 긴 순서대로 정렬하고 앞에서부터 한자리씩 자르면서 계속 길이순으로 정렬한다음 순서대로 9, 8, 7... 이런식으로 값을 부여하려고 했다 // 틀린 풀이 #include #include #include #include #include using namespace std; vector word; vector c; map m; bool compare(string a, string b) { // 정렬 함수 return a.length() > b.length(); } int main() { int n, num = 9, sum = 0; cin >> n; string t; for (int i = 0; i .. 2022. 6. 2.
#1158 요세푸스 문제 # 문제 # 입력 및 출력 # 풀이 문제를 보자마자 큐를 써야겠다고 생각했다 k번째가 될 때까지 pop하고 다시 push해서 k번째수가 제일 앞에 올땐 pop만 진행하도록 했다 출력도 맨 마지막 출력엔 ',' 출력이 없어야 하기 때문에 맨 마지막 출력을 확인하기 위해 if문을 하나 넣어줬음 #include #include using namespace std; queue q; int main() { int n, k; cin >> n >> k; for (int i = 1; i 2022. 5. 30.
#1912 연속합 # 문제 # 입력 및 출력 # 풀이 처음에 생각한 방식은 2차원 배열을 만들어서 max 값을 비교하는 것이었다 dp 배열을 2차원 배열로 만들자니 n이 최대 100,000개여서 배열이 너무 커져버려서 선언 자체가 안되더라,, 그래서 배열을 안쓰고 그냥 계산만 하려고하니까 2중 반복문이 되어서 최대 백억번이 돌아서 당연히 시간초과가 뜰 것 같았지만 그래도 코드 짜서 돌려봤다,, #include #include using namespace std; int arr[100000]; int main() { int n, maxv = -1000; cin >> n; for (int i = 0; i > arr[i]; } for (int i = 0; i < n; i++) { int sum =.. 2022. 5. 29.
#1904 01타일 # 문제 # 입력 및 출력 # 풀이 예전에도 이런 dp 문제를 풀다가 왜 덧셈으로 푸는지 몰랐는데 오늘 완전 이해했다ㅋㅋ 크기가 n인 이진 수열을 만들 때 끝은 항상 00 또는 1로 끝난다 크기가 n-2인 이진 수열의 뒤에 00을 붙이는 경우 + 크기가 n-1인 이진 수열의 뒤에 1을 붙이는 경우 따라서 dp[n] = dp[n-1] + dp[n-2] 가 점화식임 점화식 자체는 아래 블로그 보고 이해했음 https://luv-n-interest.tistory.com/948 백준, BOJ, 1904번 C++ [CPP] DP문제다. 하지만 역시 문제를 생각하는데 오래걸렸다. 20분쯤 걸린듯..ㅠ 시간제한보면.. 무조건 DP란 것이 느껴진다. https://www.acmicpc.net/problem/1904 #.. 2022. 5. 28.
#1932 정수 삼각형 # 문제 # 입력 및 출력 # 풀이 점화식은 금방 찾아서 어렵진 않았다 처음 작성한 코드가 아래와 같음 // 틀린 코드 #include #include using namespace std; int dp[500][500]; int arr[500][500]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, maxv = 0; cin >> n; for (int i = 0; i arr[i][j]; } } for (int i = 0; i dp[i][j].. 2022. 5. 27.