๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 2979๋ฒˆ: ํŠธ๋Ÿญ ์ฃผ์ฐจ(๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜)

by ์ฃผ๋ฐœ2 2020. 3. 12.
๋ฐ˜์‘ํ˜•

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

 

2979๋ฒˆ: ํŠธ๋Ÿญ ์ฃผ์ฐจ

๋ฌธ์ œ ์ƒ๊ทผ์ด๋Š” ํŠธ๋Ÿญ์„ ์ด ์„ธ ๋Œ€ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์˜ค๋Š˜์€ ํŠธ๋Ÿญ์„ ์ฃผ์ฐจํ•˜๋Š”๋ฐ ๋น„์šฉ์ด ์–ผ๋งˆ๋‚˜ ํ•„์š”ํ•œ์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ƒ๊ทผ์ด๊ฐ€ ์ด์šฉํ•˜๋Š” ์ฃผ์ฐจ์žฅ์€ ์ฃผ์ฐจํ•˜๋Š” ํŠธ๋Ÿญ์˜ ์ˆ˜์— ๋”ฐ๋ผ์„œ ์ฃผ์ฐจ ์š”๊ธˆ์„ ํ• ์ธํ•ด ์ค€๋‹ค. ํŠธ๋Ÿญ์„ ํ•œ ๋Œ€ ์ฃผ์ฐจํ•  ๋•Œ๋Š” 1๋ถ„์— ํ•œ ๋Œ€๋‹น A์›์„ ๋‚ด์•ผ ํ•œ๋‹ค. ๋‘ ๋Œ€๋ฅผ ์ฃผ์ฐจํ•  ๋•Œ๋Š” 1๋ถ„์— ํ•œ ๋Œ€๋‹น B์›, ์„ธ ๋Œ€๋ฅผ ์ฃผ์ฐจํ•  ๋•Œ๋Š” 1๋ถ„์— ํ•œ ๋Œ€๋‹น C์›์„ ๋‚ด์•ผ ํ•œ๋‹ค. A, B, C๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ์ƒ๊ทผ์ด์˜ ํŠธ๋Ÿญ์ด ์ฃผ์ฐจ์žฅ์— ์ฃผ์ฐจ๋œ ์‹œ๊ฐ„์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฃผ์ฐจ ์š”๊ธˆ์œผ๋กœ ์–ผ๋งˆ

www.acmicpc.net

์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());
		int A = Integer.parseInt(st.nextToken());	// 1๋Œ€ ์š”๊ธˆ
		int B = Integer.parseInt(st.nextToken());	// 2๋Œ€ ์š”๊ธˆ
		int C = Integer.parseInt(st.nextToken());	// 3๋Œ€ ์š”๊ธˆ
		int first = 101; // ๊ฐ€์žฅ ๋จผ์ € ์ฃผ์ฐจ์žฅ์— ๋„์ฐฉํ•œ ํŠธ๋Ÿญ์˜ ์‹œ๊ฐ„
		int last = 0;	 // ๊ฐ€์žฅ ๋Šฆ๊ฒŒ ์ฃผ์ฐจ์žฅ์— ๋„์ฐฉํ•œ ํŠธ๋Ÿญ์˜ ์‹œ๊ฐ„
		int[][] truck = new int[3][2];
		int[] arr = new int[100];
		int fee = 0;
		
		/* ์ž…๋ ฅ๋ฐ›๊ธฐ */
		for(int i=0; i<3; i++) {
			st = new StringTokenizer(bf.readLine());
			int start = Integer.parseInt(st.nextToken());
			int end = Integer.parseInt(st.nextToken());
			truck[i][0] = start;
			truck[i][1] = end;
			
			// ํ•ด๋‹น ์‹œ๊ฐ„์— ๋“ค์–ด์˜จ ํŠธ๋Ÿญ ์ฒดํฌ
			for(int j=start; j<end; j++) {
				arr[j] ++;
			}
		}
		
		/* ๊ฐ€์žฅ ๋จผ์ €, ๊ฐ€์žฅ ๋Šฆ๊ฒŒ ๋‚˜๊ฐ„ ํŠธ๋Ÿญ์˜ ์‹œ๊ฐ„ ์ฐพ๊ธฐ */
		for(int i=0; i<3; i++) {
			for(int j=0; j<2; j++) {
				if(truck[i][j] < first)	first = truck[i][j];
				if(truck[i][j] > last)	last = truck[i][j];
			}
		}
		
		/* ์ฃผ์ฐจ ์š”๊ธˆ๊ตฌํ•˜๊ธฐ ํ•ด๋‹น ์‹œ๊ฐ„์— ์ฃผ์ฐจ  ํŠธ๋Ÿญ์ด 1๋Œ€๋ฉด ๋Œ€๋‹น A์›, 2๋Œ€๋ฉด ๋Œ€๋‹น B์›, 3๋Œ€๋ช… ๋Œ€๋‹น C์› */
		for(int i=first; i<last; i++) {
			fee += (arr[i] == 1) ? arr[i] * A : 0;
			fee += (arr[i] == 2) ? arr[i] * B : 0;
			fee += (arr[i] == 3) ? arr[i] * C : 0;
		}
		
		System.out.println(fee);
		bf.close();
	}

}

ํ’€์ด

๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฌธ์ œ -> ์ฃผ์–ด์ง„ ๋ฌธ์ œ์˜ ์กฐ๊ฑด ๊ทธ๋Œ€๋กœ ํ๋ฆ„๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€์„œ ์ž‘์„ฑํ•˜๋ฉด ๋˜๋Š”๋ฐ..

์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ• ์ง€ ์•ฝ๊ฐ„ ์ƒ๊ฐ์ด ํ•„์š”ํ–ˆ๋‹ค...

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€, ํŠธ๋Ÿญ 3๋Œ€ ๋‹น ์ฃผ์ฐจ์žฅ์— ๋จธ๋ฌด๋ฅธ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์ฒดํฌํ•ด์„œ, ๊ทธ ๋จธ๋ฌด๋ฅธ ์ฐจ๋Ÿ‰์˜ ๋Œ€์ˆ˜๋งŒํผ ์š”๊ธˆ์„ ์ถœ๋ ฅํ•œ๋‹ค.

* ์‹œ๊ฐ„์€ 1๊ณผ 100 ์‚ฌ์ด์ด๋ฏ€๋กœ ์ ๋‹นํžˆ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ 101์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค.(๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ.)

 

์œ„ ๊ทธ๋ฆผ์€, ๋ฌธ์ œ์˜ ์ž…๋ ฅ์„ ๋‚˜ํƒ€๋‚ธ ์˜ˆ์‹œ์ด๋‹ค.

๊ฐ ํŠธ๋Ÿญ๋งˆ๋‹ค ๋“ค์–ด์˜ค๋Š” ์‹œ๊ฐ„ ~ ๋‚˜๊ฐ€๋Š” ์‹œ๊ฐ„์„ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋กœ ์ฒดํฌํ•˜๋ฉฐ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

์œ„ ์‚ฌ์ง„์—์„œ ์ง€๋ถˆํ•ด์•ผํ•  ์ฃผ์ฐจ ์š”๊ธˆ์€.

1์‹œ ~ 2์‹œ : ์ฐจ๋Ÿ‰ 1๋Œ€ = 5 * 1

2์‹œ ~ 3์‹œ : ์ฐจ๋ž‘ 2๋Œ€ = 3 * 2

3์‹œ ~ 4์‹œ : ์ฐจ๋Ÿ‰ 3๋Œ€ = 3 * 1

4์‹œ ~ 5์‹œ : ์ฐจ๋Ÿ‰ 3๋Œ€ = 3 * 1

5์‹œ ~ 6์‹œ : ์ฐจ๋Ÿ‰ 2๋Œ€ = 3 * 2

6์‹œ ~ 7์‹œ : ์ฐจ๋Ÿ‰ 1๋Œ€ = 5 * 1

7์‹œ ~ 8์‹œ : ์ฐจ๋Ÿ‰ 1๋Œ€ = 5 * 1

 

๋‹ค ๋”ํ•˜๋ฉด 5 + 6 + 3 + 3 + 6 + 5 + 5 = 33์› ์ด ๋œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€