본문 바로가기
backjoon/그리디알고리즘

백준 13305 주유소 c언어

by 정구지개발자 2023. 2. 15.
728x90

https://www.acmicpc.net/problem/13305

 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net

사고과정)

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

댓글