Coding (195) 썸네일형 리스트형 2589번 보물섬 기본적인 BFS 문제. 1. 한 육지에서 시작. 2. 다른 육지로 이동. 3. 카운트 세면서 가장 긴 시간(최댓값)을 구한다. 4. 다른 육지에서 시작하면서 1~3번을 실행한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #include #include #define visited true #define Non_visited false #define .. 10871번 X보다 작은 수 구현 문제 X보다 작은 값을 구하면 된다. 1234567891011121314151617181920212223242526272829303132#include #include #define MAX 10001 using namespace std; int N,X;int num[MAX];vector ans; void solved(){ for(int i=0;i 9498번 시험 성적 구현 문제. 점수대별로 등급을 만들어놓고 입력받은 값에 대한 등급을 출력하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include #define MAX 101 using namespace std; int score; char Rank[MAX]; void solved(){ for(int i=0;i 2231번 분해합 브루트 포스 문제. 값을 입력받으면 몇 자리수인지 확인하고 그 자리수만큼 숫자를 채우고 1씩 증가시켜가며 답을 구했다. ex) 216 -> 100 (100+1+0+0) -> 101 (101+1+0+1) -> 102 (102+1+0+2) .... .. . -> 198 (198+1+9+8=216) 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include using namespace std; string str; long size; int Target; void solved(int ans, int sum, int cnt){ if((sum+ans)==Target){ cout 5585번 거스름돈 기본적인 그리디 문제. 12345678910111213141516171819202122232425262728293031#include using namespace std; int cur=1000;int N;int change[6]={1,5,10,50,100,500};int ans; void solved(int money){ while(money!=0){ for(int i=5;i>=0;i--){ while(money-change[i]>=0){ money-=change[i]; ans++; } } } cout 1978번 소수 찾기 기본적인 에라토스테네스의 체 문제 2를 제외한 2의 배수를 0으로, 3를 제외한 3의 배수를 0으로, 4의 경우 2의 배수이므로 이미 0 (여기서 조건문으로 그 값이 0일때 다음 값으로 넘어가도록 하면 시간을 줄일 수 있다), 5를 제외한 5의 배수를 0으로, 이런 식으로 반복하여 1000까지 해주면 된다 -> 0이 아닌 값은 모두 소수. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include #define MAX 1001 using namespace std; int N; int Era[MAX]; int ans; void solved(int num){ for(in.. 1912번 연속합 DP문제. 최댓값을 저장하는 sum이라는 배열을 만들고 i번째 값을 구한다고 생각해보자. 쉽게 생각해보면 (i)번째 최댓값은 (i-1)번에서 구한 최댓값 + 현재 (i)번째의 값을 더하면 된다. 여기서 만약 (i-1)번째 최댓값과 현재 (i)번째 값을 더한 값이 현재 (i)번째 값보다 작다면 그때 (i)번째의 최댓값은 현재 (i)번째 값이 된다. 따라서 sum[i]=max(sum[i-1]+num[i],num[i])라는 점화식을 구할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include #define MAX 100001 .. 2309번 일곱 난쟁이 기본적인 브루트 포스 문제. 9명 중 2명을 찾아내면 된다. 즉, 9명의 키를 다 더하고 2명의 키를 빼서 키의 합이 100이 나오면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include #include using namespace std; int tall[9]; int sum; void solved(){ for(int i=0;i 이전 1 ··· 3 4 5 6 7 8 9 ··· 25 다음