728x90
https://www.acmicpc.net/problem/13305
사고과정)
1. 이중 while문을 사용하여 문제를 해결할려고 접근
2. 굳이 이중 while문을 사용하지 않고 하나만 써도 가능할것이라 생각이들었음
3. 주유소1*(도로1) + 주유소1*(도로2) == 주유소1 * (총 도로) 라는 논리를 이용해서 문제해결
4. 주유소 1과 주유소 2를 비교하여 더작은 주유소를 기준으로 도로를 곱해준다.
개선점 || 비판점)
1. 굳이 N에 long long 자료값을 부여할 필요 없었다. 코드 깔끔히 적도록 노력해야겠다.
2. 배열이름도 A[] 이런식으로 대충 지어서 만들지 말고 의미에 맞게 road[] 이런식으로 적으면 더 좋았을거 같다.
나의코드)
#include <stdio.h>
int main()
{
long long N, i, min;
long long result, cur;
scanf("%lld", &N);
long long A[N-1];
i = 0;
while (i < N - 1)
{
scanf("%lld", &A[i]);
i++;
}
result = 0;
i = 0;
cur = 0;
min = 0;
while (i < N - 1)
{
scanf("%lld", &cur);
if (i == 0 || min > cur)
min = cur;
result += min * A[i];
i++;
}
printf("%lld", result);
return (0);
}
728x90
'backjoon > 그리디알고리즘' 카테고리의 다른 글
백준 11399 ATM c언어 (0) | 2023.02.14 |
---|---|
백준 11047번 동전0 c언어 (0) | 2023.01.19 |
댓글