일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 13913번
- 토마토
- 1969번
- 정리
- 나이트의이동
- 2503번
- 1541번
- 16439번
- 5014번
- 14940번
- 7526번
- node.js
- 풀이
- 2422번
- javascript
- 20300번
- 20365번
- 자바스크립트
- 16953번
- 123만들기
- 17626번
- 1926번
- 알고리즘
- 맥주마시면서걸어가기
- 백준
- 타입스크립트 프로그래밍
- 6593번
- 한윤정이 이탈리아에 가서 아이스크림을 사먹는데
- 5427번
- 타입스크립트
Archives
- Today
- Total
Sqsung DevLog
[백준] 13305번: 주유소 - Node.js (자바스크립트) 본문
1. 문제 ㅡ 13305번: 주유소 (난이도: Silver III)
13305번: 주유소
표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1
www.acmicpc.net
2. 풀이 ㅡ Node.js (자바스크립트)
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
const N = +input[0];
const distances = input[1].split(' ').map(val => BigInt(val));
const prices = input[2].split(' ').map(val => BigInt(val));
const solution = () => {
let cheapestPrice = prices[0];
let totalCost = 0n;
for (let i = 0; i < distances.length; i++) {
totalCost += cheapestPrice * distances[i];
if (cheapestPrice > prices[i + 1]) cheapestPrice = prices[i + 1];
}
return String(totalCost);
};
console.log(solution());
2-1. 풀이 설명
N개의 도시를 다 통과하기 위해 필요한 최저 기름 값을 계산하는 그리디 유형의 문제다. 이번 문제에서 특별히 주의해야 할 점이 있다면 BigInt를 사용해야 한다는 점이다.
시작하는 시점에 가장 저렴한 기름 값은 현재 도시에 위치한 주유소의 기름 값이므로, 가장 저렴한 기름 값 정보를 저장해 둘 cheapestPrice 변수를 선언하고 현재 도시의 기름 값으로 초기화한다. 누적된 비용을 나타내는 totalCost 변수는 BigInt 값을 받을 수 있도록 0n으로 초기화한다.
이후 각 도시 간의 거리 정보들이 저장되어 있는 distances 배열의 길이만큼 for문을 돌면서 아래 과정을 반복하면 된다.
1. 누적 비용에 cheapestPrice * 이동해야할 거리를 더한다
2. 다음 도시의 기름 값이 cheapestPrice보다 저렴한 경우, cheapestPrice를 해당 도시의 기름 값으로 변경
마지막에는 누적된 비용을 string으로 변경해서 반환해 주면 된다.
'Algorithm' 카테고리의 다른 글
[백준] 2503번: 숫자 야구 - Node.js (자바스크립트) (0) | 2023.06.14 |
---|---|
[백준] 9205번: 맥주 마시면서 걸어가기 - Node.js (자바스크립트) (0) | 2023.06.14 |
[백준] 20115번: 에너지 드링크 - Node.js (자바스크립트) (0) | 2023.06.13 |
[백준] 20300번: 서강근육맨 - Node.js (자바스크립트) (0) | 2023.06.09 |
[백준] 2422번: 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 - Node.js (자바스크립트) (1) | 2023.06.08 |