컴공댕이 공부일지
221110 EC.crew : 그리디 알고리즘 본문
728x90
[ 2022년 11월 10일 정모 문제 풀이 모음 ]
#1.
해결
동전 0 (백준 11047번)
#include <stdio.h>
int main()
{
int n,k;
int ans=0;
int count=0;
scanf("%d", &n);
scanf("%d", &k);
int arr[n];
for(int i=0; i<n; i++) {
scanf("%d", &arr[i]);
}
//뒤에서부터 훑어서 작아지는 순간 선택
int j=n-1;
while(ans!=k) {
if(arr[j]<=k-ans) {
ans+=arr[j];
count++;
j=n-1;
} else {
j--;
}
}
printf("%d", count);
return 0;
}
#2.
해결(백준 시간 초과... 배열 정렬하는 게 너무 오래걸리나봐...)
카드 정렬하기 (백준 1715번)
#include <stdio.h>
int main()
{
int n;
int temp=0;
int sum=0;
int result=0;
scanf("%d", &n);
//가장 작은 2개 고르고 그 둘의 합을 새로 저장.
//그리고 남은 한 자리는 0으로 초기화.
int arr[n];
for(int i=0; i<n; i++) {
scanf("%d", &arr[i]);
}
int arrSum=0;
int x=0;
while(x<n-1) {
sum=0;
/*
//배열이 모두 0되면 종료!
for(int i=0; i<n; i++) {
arrSum+=arr[i];
}*/
sum=arr[x]+arr[x+1];
result+=sum;
//0과 두 수의 합으로 배열 재정렬
arr[x]=0;
arr[x+1]=sum;
//오름차순 재배열
for(int i=0; i<n; i++) {
for(int j=i+1; j<n; j++) {
if(arr[i]>arr[j]) {
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
//printf("%d %d %d\n", sum, x, result);
x++;
}
printf("%d", result);
return 0;
}
728x90
'기록 > EC.crew 정기 모임 정리' 카테고리의 다른 글
230320 EC.crew 4기 2주차 정모 (★백준 1004 어린왕자) (0) | 2023.03.20 |
---|---|
221117 EC.crew : 스택과 큐 (0) | 2022.11.18 |
221103 EC.crew : 구간 합 부분 합 (0) | 2022.11.05 |
220929 EC.crew (0) | 2022.09.29 |
220829 EC.crew (0) | 2022.08.31 |
Comments