알고리즘(C++)/백준 알고리즘 (28) 썸네일형 리스트형 [백준] C++ 10773번 : 제로 풀이과정 코드 더보기 #include #include using namespace std; int main() { int iInput = 0; int sum = 0; stack s; cin >> iInput; for (int i = 0; i > num; if (num != 0) s.push(num); else s.pop(); } while (!s.empty()) { sum += s.top(); s.pop(); } cout [백준] C++ 2748번 : 피보나치 수 2 풀이과정 n이 90일 때, int형의 저장범위를 벗어나기 때문에 long long 형으로 저장해야 한다. 코드 더보기 #include using namespace std; int main() { long long iValue[100] = { 0,1, }; int iInput = 0; cin >> iInput; for (int i = 2; i [백준] C++ 1931번 : 회의실배정 풀이과정 배열에 입력받은 회의의 수를 끝나는 시간 기준으로 오름차순 정렬을 한다. 정렬된 배열에서 시작시간이 CurrTime보다 큰 경우 해당 인덱스의 회의가 끝나는 시간을 CurrTime으로 변경하고 이후 회의 시작시간과 끝나는 시간이 같은 경우를 체크하기 위해 끝나는 시간이 같은 경우들의 시작 시간을 오름차순으로 정렬해줘야한다. 진행 과정 설명 코드 더보기 #include using namespace std; bool cmp1(pair* a, pair* b) { return a->second second; } bool cmp2(pair* a, pair* b) { return a->first first; } int main() { int N = 0; int iCurrTime = 0; .. [백준] C++ 11047번 : 동전 0 풀이과정 동전 개수를 최소로 사용하려면 K보다 작은 동전 중 금액이 가장 큰 동전부터 사용하면 된다. 코드 더보기 #include using namespace std; int main() { int N = 0; int K = 0; int* pValue; int iResult = 0; cin >> N; cin >> K; pValue = new int[N]; for (int i = 0; i > pValue[i]; for (int i = N - 1; i >= 0; --i) { if (K == 0) break; while (K - pValue[i] >= 0) { K -= pValue[i]; iResult++; } } cout [백준] C++ 11399번 : ATM 풀이과정 N번째 사람이 인출하는데 걸리는 시간 = N-1번까지 기다린 시간 + N번째를 인출하는데 걸리는 시간 인출하는데 걸리는 시간이 적은 순서대로 인출하면 최소값을 구할 수 있다. 코드 더보기 #include using namespace std; int iNum = 0; int NeedTime(int* p, int added) { int min = 0; for (int i = 0; i p[i] && p[i] != 2000) min = i; } if (p[min] == 2000) return 0; int tmp = min; min = p[min]; p[tmp] = 2000; return min + added + NeedTime(p, added + min.. [백준] C++ 4936번 : 섬의 개수 풀이과정 코드 더보기 #include using namespace std; int iIsland[50][50] = { 0, }; int W = 0, H = 0; void CheckIsland(int w, int h); int main() { cin >> W >> H; while (W != 0 && H != 0) { int iNumOfIsland = 0; for (int j = 0; j > iIsland[j][i]; } } for (int j = 0; j < H; ++j) { for (int i = 0; i < W; ++i) { if (iIsland[j][i] == 1) { iNumOfIsland++; CheckIsland.. [백준] C++ 1110번 : 더하기 사이클 풀이과정 입력 받은 N이 10보다 작다면 iNum1=0, iNum2 =N; 10의자리를 나타내는 iNum1에 0을 1의 자리를 나타내는 iNum2에 N의 값을 대입해준다. 입력 받은 N이 10보다 크다면 (N>=10), iNum1 = N/10, iNum2 = N%10; 10의자리를 나타내는 iNum1에 N을 10으로 나눈 몫을 1의 자리를 나타내는 iNum2에 N을 10으로 나눈 나머지를 대입해준다. 진행하는 연산을 설명하자면 A(10의자리) , B(1의자리) , C (A+B를 10으로 나눈 나머지) , D (A+B를 10으로 나눈 몫) A B = D C 로 다음 연산의 A=B, B=C 가 된다. 이 과정을 처음 A B값이 나올 때 까지 반복한 횟수를 구하면 된다. 코드 더보기 #include using.. [백준] C++ 1912번 : 연속합 풀이과정 점화식 : d[1] = v[1], (n>1) d[n] = max( d[n-1] + v[n] , v[n] ) n개의 정수가 주어질 때, d[1] ~ d[n] 의 값 중 가장 큰 값이 제일 큰 연속합. 코드 더보기 #include #include using namespace std; int main() { int d[100001] = { -1000, }; int iValue[100001] = { 0, }; int iInput = 0; cin >> iInput; for (int i = 1; i > iValue[i]; if (i == 1) d[1] = iValue[1]; else d[i] = max(d[i - 1] + iValue[i], iValue[i]); } for (int i = 1; i 이전 1 2 3 4 다음