SMALL
https://www.acmicpc.net/problem/13305
13305번: 주유소
표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1
www.acmicpc.net
- 문제
- 문제풀이
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
internal class Program
{
static void Main(string[] args)
{
int N = int.Parse(Console.ReadLine());
int[] road_data = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
long[] cost_data = Array.ConvertAll(Console.ReadLine().Split(), long.Parse);
long cost = 0;
long minprice=cost_data[0];
for(int i = 0; i < N - 1; i++)
{
if(cost_data[i] < minprice)
{
minprice = road_data[i];
}
cost+=minprice*road_data[i];
}
Console.WriteLine(cost);
}
}
}
첫 번째 주유소부터 시작하여, 현재까지 최소 가격을 계속 갱신하며 각 도시까지 이동하는 데 필요한 비용을 계산하고
현재 도시에서 주유할 때 가격이 현재까지 최소 가격보다 작다면, 그 가격으로 최소 가격을 바꿔서 계산된 비용을 cost에 누적한뒤 출력했다.
그리고 17점이 나왔다.
- 코드 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
internal class Program
{
static void Main(string[] args)
{
int N = int.Parse(Console.ReadLine());
int[] road_data = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
long[] cost_data = Array.ConvertAll(Console.ReadLine().Split(), long.Parse);
long cost = 0;
long minprice=cost_data[0];
for(int i = 0; i < N - 1; i++)
{
if(cost_data[i] < minprice)
{
minprice = cost_data[i];
}
cost+=minprice*road_data[i];
}
Console.WriteLine(cost);
}
}
}
road_data가 아닌 cost_data로 바꾸고 100점을 받았다.
- 후기
헷갈린다..
LIST
'백준 > C#' 카테고리의 다른 글
[C#]백준 1541번: 잃어버린 괄호 (0) | 2023.07.19 |
---|---|
[C#]백준 11047번: 동전 0 (0) | 2023.07.19 |
[C#]백준 11399번: ATM (0) | 2023.07.19 |
[C#]백준 1931번: 회의실 배정 (0) | 2023.07.19 |
[C#]백준 2630번: 색종이 만들기 (0) | 2023.03.29 |