01-24 13:36
Recent Posts
Recent Comments
관리 메뉴

miinsun

[BAEKJOON] λ°±μ€€ 그리디 μ•Œκ³ λ¦¬μ¦˜ 13305 :: μ£Όμœ μ†Œ λ³Έλ¬Έ

Algorithm/Baekjoon

[BAEKJOON] λ°±μ€€ 그리디 μ•Œκ³ λ¦¬μ¦˜ 13305 :: μ£Όμœ μ†Œ

miinsun 2022. 4. 15. 00:21

πŸ’¬  문제 μ„€λͺ…

μ–΄λ–€ λ‚˜λΌμ— N개의 λ„μ‹œκ°€ μžˆλ‹€. 이 λ„μ‹œλ“€μ€ 일직선 λ„λ‘œ μœ„μ— μžˆλ‹€. νŽΈμ˜μƒ 일직선을 μˆ˜ν‰ λ°©ν–₯으둜 λ‘μž. 제일 μ™Όμͺ½μ˜ λ„μ‹œμ—μ„œ 제일 였λ₯Έμͺ½μ˜ λ„μ‹œλ‘œ μžλ™μ°¨λ₯Ό μ΄μš©ν•˜μ—¬ μ΄λ™ν•˜λ €κ³  ν•œλ‹€. μΈμ ‘ν•œ 두 λ„μ‹œ μ‚¬μ΄μ˜ λ„λ‘œλ“€μ€ μ„œλ‘œ 길이가 λ‹€λ₯Ό 수 μžˆλ‹€. λ„λ‘œ 길이의 λ‹¨μœ„λŠ” kmλ₯Ό μ‚¬μš©ν•œλ‹€.

처음 μΆœλ°œν•  λ•Œ μžλ™μ°¨μ—λŠ” 기름이 μ—†μ–΄μ„œ μ£Όμœ μ†Œμ—μ„œ 기름을 λ„£κ³  μΆœλ°œν•˜μ—¬μ•Ό ν•œλ‹€. κΈ°λ¦„ν†΅μ˜ ν¬κΈ°λŠ” λ¬΄μ œν•œμ΄μ–΄μ„œ μ–Όλ§ˆλ“ μ§€ λ§Žμ€ 기름을 넣을 수 μžˆλ‹€. λ„λ‘œλ₯Ό μ΄μš©ν•˜μ—¬ 이동할 λ•Œ 1kmλ§ˆλ‹€ 1λ¦¬ν„°μ˜ 기름을 μ‚¬μš©ν•œλ‹€. 각 λ„μ‹œμ—λŠ” 단 ν•˜λ‚˜μ˜ μ£Όμœ μ†Œκ°€ 있으며, λ„μ‹œ λ§ˆλ‹€ μ£Όμœ μ†Œμ˜ 리터당 가격은 λ‹€λ₯Ό 수 μžˆλ‹€. κ°€κ²©μ˜ λ‹¨μœ„λŠ” 원을 μ‚¬μš©ν•œλ‹€.

예λ₯Ό λ“€μ–΄, 이 λ‚˜λΌμ— λ‹€μŒ 그림처럼 4개의 λ„μ‹œκ°€ μžˆλ‹€κ³  ν•˜μž. 원 μ•ˆμ— μžˆλŠ” μˆ«μžλŠ” κ·Έ λ„μ‹œμ— μžˆλŠ” μ£Όμœ μ†Œμ˜ 리터당 가격이닀. λ„λ‘œ μœ„μ— μžˆλŠ” μˆ«μžλŠ” λ„λ‘œμ˜ 길이λ₯Ό ν‘œμ‹œν•œ 것이닀. 

 

제일 μ™Όμͺ½ λ„μ‹œμ—μ„œ 6λ¦¬ν„°μ˜ 기름을 λ„£κ³ , 더 μ΄μƒμ˜ 주유 없이 제일 였λ₯Έμͺ½ λ„μ‹œκΉŒμ§€ μ΄λ™ν•˜λ©΄ 총 λΉ„μš©μ€ 30원이닀. λ§Œμ•½ 제일 μ™Όμͺ½ λ„μ‹œμ—μ„œ 2λ¦¬ν„°μ˜ 기름을 λ„£κ³ (2×5 = 10원) λ‹€μŒ 번 λ„μ‹œκΉŒμ§€ μ΄λ™ν•œ ν›„ 3λ¦¬ν„°μ˜ 기름을 λ„£κ³ (3×2 = 6원) λ‹€μŒ λ„μ‹œμ—μ„œ 1λ¦¬ν„°μ˜ 기름을 λ„£μ–΄(1×4 = 4원) 제일 였λ₯Έμͺ½ λ„μ‹œλ‘œ μ΄λ™ν•˜λ©΄, 총 λΉ„μš©μ€ 20원이닀.

또 λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ 제일 μ™Όμͺ½ λ„μ‹œμ—μ„œ 2λ¦¬ν„°μ˜ 기름을 λ„£κ³ (2×5 = 10원) λ‹€μŒ 번 λ„μ‹œκΉŒμ§€ μ΄λ™ν•œ ν›„ 4λ¦¬ν„°μ˜ 기름을 λ„£κ³ (4×2 = 8원) 제일 였λ₯Έμͺ½ λ„μ‹œκΉŒμ§€ μ΄λ™ν•˜λ©΄, 총 λΉ„μš©μ€ 18원이닀.

각 λ„μ‹œμ— μžˆλŠ” μ£Όμœ μ†Œμ˜ 기름 가격과, 각 λ„μ‹œλ₯Ό μ—°κ²°ν•˜λŠ” λ„λ‘œμ˜ 길이λ₯Ό μž…λ ₯으둜 λ°›μ•„ 제일 μ™Όμͺ½ λ„μ‹œμ—μ„œ 제일 였λ₯Έμͺ½ λ„μ‹œλ‘œ μ΄λ™ν•˜λŠ” μ΅œμ†Œμ˜ λΉ„μš©μ„ κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

πŸ”¨  μž…μΆœλ ₯ 예

μž…λ ₯ 

  • ν‘œμ€€ μž…λ ₯으둜 λ‹€μŒ 정보가 주어진닀.
  • 첫 번째 μ€„μ—λŠ” λ„μ‹œμ˜ 개수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ N(2 ≤ N ≤ 100,000)이 주어진닀.
  • λ‹€μŒ μ€„μ—λŠ” μΈμ ‘ν•œ 두 λ„μ‹œλ₯Ό μ—°κ²°ν•˜λŠ” λ„λ‘œμ˜ 길이가 제일 μ™Όμͺ½ λ„λ‘œλΆ€ν„° N-1개의 μžμ—°μˆ˜λ‘œ 주어진닀.
  • λ‹€μŒ μ€„μ—λŠ” μ£Όμœ μ†Œμ˜ 리터당 가격이 제일 μ™Όμͺ½ λ„μ‹œλΆ€ν„° μˆœμ„œλŒ€λ‘œ N개의 μžμ—°μˆ˜λ‘œ 주어진닀.
  • 제일 μ™Όμͺ½ λ„μ‹œλΆ€ν„° 제일 였λ₯Έμͺ½ λ„μ‹œκΉŒμ§€μ˜ κ±°λ¦¬λŠ” 1이상 1,000,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€.
  • 리터당 가격은 1 이상 1,000,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€. 

 

좜λ ₯

  • ν‘œμ€€ 좜λ ₯으둜 제일 μ™Όμͺ½ λ„μ‹œμ—μ„œ 제일 였λ₯Έμͺ½ λ„μ‹œλ‘œ κ°€λŠ” μ΅œμ†Œ λΉ„μš©μ„ 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯ 1)

4
2 3 1
5 2 4 1

 

예제 좜λ ₯ 1)

18

 

예제 μž…λ ₯ 2)

4
3 3 4
1 1 1 1

 

예제 좜λ ₯ 2)

10

​​

​

πŸ’»  Main.java

/* λ°±μ€€ 그리디 μ•Œκ³ λ¦¬μ¦˜ - 13305 :: μ£Όμœ μ†Œ */
import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine()); // λ„μ‹œμ˜ 개수
		
		// λ„λ‘œμ˜ 길이
		long[] roads = new long[n - 1];
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i = 0; i < n - 1; i++) {
			roads[i] = Integer.parseInt(st.nextToken());
		}

		// μ£Όμœ μ†Œμ˜ 기름 가격
		long[] oils = new long[n];
		st = new StringTokenizer(br.readLine());
		for(int i = 0; i < n; i++) {
			oils[i] = Integer.parseInt(st.nextToken());

		}
		
		long answer = 0;
		long min = oils[0];
		for(int i = 0; i < n - 1; i++) {
        	// 더 적은 μ£Όμš”μ†Œλ₯Ό λ§Œλ‚˜λ©΄ 
			min = Math.min(min, oils[i]);
			
			answer += (min * roads[i]);
		}
		
		System.out.println(answer);
		br.close();
	} 
}
Comments