πŸ”₯ Algorithm/Baekjoon

[λ°±μ€€ 16917번] 양념 반 ν›„λΌμ΄λ“œ 반 - μžλ°”μŠ€ν¬λ¦½νŠΈ(nodejs)

Lennon 2022. 1. 21. 18:01
728x90
λ°˜μ‘ν˜•

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

 

16917번: 양념 반 ν›„λΌμ΄λ“œ 반

ν˜„μ§„ μΉ˜ν‚¨μ—μ„œ νŒλ§€ν•˜λŠ” μΉ˜ν‚¨μ€ 양념 μΉ˜ν‚¨, ν›„λΌμ΄λ“œ μΉ˜ν‚¨, 반반 μΉ˜ν‚¨μœΌλ‘œ 총 μ„Έ μ’…λ₯˜μ΄λ‹€. 반반 μΉ˜ν‚¨μ€ μ ˆλ°˜μ€ 양념 μΉ˜ν‚¨, μ ˆλ°˜μ€ ν›„λΌμ΄λ“œ μΉ˜ν‚¨μœΌλ‘œ μ΄λ£¨μ–΄μ Έμžˆλ‹€. 양념 μΉ˜ν‚¨ ν•œ 마리의 가격은

www.acmicpc.net

const fs = require('fs');
let input = fs
  .readFileSync('dev/stdin')
  .toString()
  .trim()
  .split(' ')
  .map((v) => +v);

let [seasoning, fried, half, seasoningCount, friedCount] = input;
let answer = 0;
let min = Math.min(seasoningCount, friedCount);
if (seasoning + fried > half * 2) {
  answer += min * half * 2;
  seasoningCount -= min;
  friedCount -= min;

  if (seasoningCount !== 0) {
    if (seasoning > half * 2) {
      answer += half * 2 * seasoningCount;
    } else {
      answer += seasoning * seasoningCount;
    }
  }
  if (friedCount !== 0) {
    if (fried > half * 2) {
      answer += half * 2 * friedCount;
    } else {
      answer += fried * friedCount;
    }
  }
} else {
  answer += seasoningCount * seasoning;
  answer += friedCount * fried;
}

console.log(answer);

브루트포슀 λ¬Έμ œμ΄λ‹€.

μš°μ„  (μ–‘λ…λ°˜+ν›„λΌμ΄λ“œλ°˜) * 2 와 양념1 + ν›„λΌμ΄λ“œ1 의 값을 λ¨Όμ € λΉ„κ΅ν•œλ‹€. 

μ „μžκ°€ 더 μ‹Έλ‹€λ©΄ μ΅œμ†Œ 양념 ν›„λΌμ΄λ“œ κ°œμˆ˜μ—μ„œ μž‘μ€ 개수 만큼 λ°˜λ³΅ν•΄ 가격을 더해쀀닀.

κ·Έ ν›„ (μ–‘λ…λ°˜+ν›„λΌμ΄λ“œλ°˜) * 2의 가격이 양념1 λ³΄λ‹€ μ‹Ό 지 ν™•μΈν•œλ‹€. μ΅œμ†Œ κ°œμˆ˜μ΄λ―€λ‘œ κ°œμˆ˜κ°€ λ„˜μ–΄λ„ 상관없닀.

μ‹Έλ‹€λ©΄ 반반으둜 λ‚˜λ¨Έμ§€ 개수λ₯Ό μ±„μš°κ³  ν›„λΌμ΄λ“œλ„ λ˜‘κ°™μ΄ ν•΄μ€€λ‹€.

 

(μ–‘λ…λ°˜+ν›„λΌμ΄λ“œλ°˜) * 2 μ™€ μ–‘념1 + ν›„λΌμ΄λ“œ1μ—μ„œ ν›„μžκ°€ μ‹Έλ‹€λ©΄ κ·Έλƒ₯ μ΅œμ†Œ 개수만큼 각각 κ³±ν•΄μ£Όλ©΄ λλ‚œλ‹€.

 

이 문제의 핡심은 (μ–‘λ…λ°˜+ν›„λΌμ΄λ“œλ°˜) * 2의 가격이 μ–‘념1 or ν›„λΌμ΄λ“œ1보닀 μ‹Ό 지 ν™•μΈν•˜λŠ” κ²ƒμ΄μ˜€λ‹€. 

 

728x90
λ°˜μ‘ν˜•