mark340
착하게살자
mark340
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • 백준 (11)
    • 알고리즘 (1)
    • Javascript (17)
    • CS (18)
    • 기타 (9)
    • AI (1)
    • Angular (2)
    • Linux (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JavaScript
  • oauth
  • MySQL
  • parsing
  • Closure

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
mark340

착하게살자

[백준 13305] 주유소 / Node.js / 그리디 알고리즘 기초
백준

[백준 13305] 주유소 / Node.js / 그리디 알고리즘 기초

2023. 1. 24. 12:08

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

 

13305번: 주유소

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

www.acmicpc.net

 

  • 문제 지문이 길어도 요점을 이해하는 것이 중요
  • 1. 기름값이 저렴한지 비교한다.
  • 2. 더 저렴한 주유소까지만 갈 수 있는 기름만 주유하고 이동한다.
  • 본 문제에선 단위의 값이 크므로 BigInt를 사용하여야 한다.

 

const input = require('fs').readFileSync('/dev/stdin')
.toString().trim()
.split('\n')
.map((v)=> v.split(' ').map((v) => BigInt(v)))  // BigInt로 자료형 변환

let distance = input[1] // 도시와의 거리
let charges = input[2]  // 도시별 주유소의 요금

let cost = 0n;  // 누적비용을 저장할 변수
let curPrice = charges[0]  // 최저 요금은 초기 주유소의 요금으로 세팅

for(let i=0; i<distance.length; i++){
  cost += curPrice * distance[i]  // 현최저 * 거리 = 비용에 누적
  if(curPrice > charges[i+1]) curPrice = charges[i+1]  // 현요금이 다음 주유소의 요금보다 비쌀경우 요금을 다음 주유소의 요금으로 갱신
}

console.log(String(cost));

 

저작자표시 (새창열림)

'백준' 카테고리의 다른 글

[백준 1339] 단어 수학 / Node.js  (0) 2023.01.28
[백준 16953] A → B  (0) 2023.01.24
[백준 11047] 동전0 / Node.js / 그리디 알고리즘 기초  (0) 2023.01.23
[백준 1931] 회의실 배정 / Node.js  (0) 2023.01.23
[백준 2108] 통계학 / 배열 요소의 최빈값 구하기 / Object.entries()  (0) 2023.01.14
    '백준' 카테고리의 다른 글
    • [백준 1339] 단어 수학 / Node.js
    • [백준 16953] A → B
    • [백준 11047] 동전0 / Node.js / 그리디 알고리즘 기초
    • [백준 1931] 회의실 배정 / Node.js
    mark340
    mark340
    착하게삽시다

    티스토리툴바