본문 바로가기

이론/코딩테스트71

[백준] 1744번 수 묶기 [그리디 알고리즘] -문제 -코드 혼자 푼 코드, 좀 더 일반화 필요해보임 => 좋은 코드 : https://mygumi.tistory.com/220 #include #include #include using namespace std; int main() { int n=0, sum=0 ,p=0; scanf("%d", &n); vector a(n); for (int i = 0; i = 0 && a[p -1] > 0) { if (a[p] * a[p - 1] > a[p] + a[p - 1]) { sum += a[p] * a[p - 1]; } else { sum += a[p] + .. 2022. 8. 18.
[백준] 1049번 기타줄 (그리디 알고리즘) -문제 1. 세트가격의 최솟값은 세트가격들과 (낱개가격 * 6)에서 최솟값 찾기 2. 낱개가격의 최솟값은 낱개가격들에서 최솟값 찾기 3. 세트가격으로 살 수 있을 만큼 구매하고(q개), 남은 개수(r개)는 세트가격과 (낱개가격 * r)가격 비교해서 최솟값으로 선택하기 -코드 #include using namespace std; int main() { int n, m, tmp1=0, tmp2=0, setMin = 1000, oneMin = 1000, sum =0 ; scanf("%d %d", &n, &m); for (int i = 0; i < m; i++) { scanf("%d %d", &tmp1, &tmp2); if (tmp1 < setMin) setMin = tmp1; if (tmp2 < oneMin).. 2022. 8. 15.
[백준] 1715번 카드 정렬하기 (그리디 알고리즘, 우선순위큐) -문제 -코드 #include #include using namespace std; int main() { int n, sum =0,k, tmp1, tmp2, tmp; scanf("%d", &n); priority_queue pq; //오름차순 for (int i = 0; i 1) { tmp1 = pq.top(); pq.pop(); tmp2 = pq.top(); pq.pop(); tmp = tmp1 + tmp2; sum += tmp; if(!pq.empty()) pq.push(tmp); } printf("%d", sum); return 0; } 2022. 8. 9.
[백준] 1520번 내리막 길 (DFS + DP) -문제 -코드 #include using namespace std; int n, m; int map[501][501], dp[501][501]; int dx[4] = { 1, 0, -1, 0 }; int dy[4] = { 0, 1, 0, -1 }; int DFS(int x, int y) { int xx, yy; if (x == n && y == m) return 1; if (dp[x][y] != -1) return dp[x][y]; dp[x][y] = 0; for (int i = 0; i < 4; i++) { xx = x + dx[i]; yy = y + dy[i]; if (xxn || yym) continue; if (map[xx][yy] < map[x][y]) { dp[x][y] += DFS(xx, y.. 2022. 8. 8.