λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Algorithm

[λ°±μ€€] 5612번: ν„°λ„μ˜ μž…κ΅¬μ™€ 좜ꡬ

by 주발2 2020. 5. 1.
λ°˜μ‘ν˜•

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

 

5612번: ν„°λ„μ˜ μž…κ΅¬μ™€ 좜ꡬ

문제 μƒκ·Όμ΄λŠ” 남산1ν˜Έν„°λ„μ˜ μž…κ΅¬μ™€ μΆœκ΅¬μ—μ„œ 1뢄에 ν†΅κ³Όν•˜λŠ” μ°¨λŸ‰μ˜ 수λ₯Ό μ‘°μ‚¬ν–ˆλ‹€. μ΄λ•Œ, 터널에 μ°¨λŸ‰μ΄ κ°€μž₯ 많이 μžˆμ—ˆμ„ λ•Œ, λͺ‡ λŒ€ μžˆμ—ˆλŠ”μ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에

www.acmicpc.net

μ½”λ“œ

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int n = scan.nextInt();	// μ‘°μ‚¬ν•œ μ‹œκ°„
		int m = scan.nextInt();	// ν„°λ„μ•ˆ μ°¨λŸ‰ 수
		int temp = m;
		int result = m;
		
		for(int i=0; i<n; i++) {
			int in = scan.nextInt();	// μž…κ΅¬ ν†΅κ³Όν•œ 차의 수
			int out = scan.nextInt();	// 좜ꡬ ν†΅κ³Όν•œ 차의 수
			temp = temp + in - out;
			
			// ν„°λ„μ•ˆ μ°¨λŸ‰μ˜ μˆ˜κ°€ 0보닀 μž‘μ€κ²½μš° 0 좜λ ₯, 0보닀 큰경우 -> μ΄μ „μ˜ μ΅œλŒ“κ°’κ³Ό 비ꡐ
			result = (temp < 0) ? 0 : Math.max(temp, result);
			if(result == 0)	break;
		}
		System.out.println(result);
		scan.close();
	}

}

풀이

μ‹œκ°„λ‹Ή ν„°λ„μ•ˆμ— μ‘΄μž¬ν•˜λŠ” μ°¨λŸ‰μ˜ 수λ₯Ό κ΅¬ν•΄μ„œ λΉ„κ΅ν•œλ‹€.

ν„°λ„μ•ˆμ— μ‘΄μž¬ν•˜λŠ” μ°¨λŸ‰μ˜ 수 = ν˜„μž¬μ°¨(temp) + μž…κ΅¬ ν†΅κ³Όν•œ 차의수(in) - 좜ꡬ ν†΅κ³Όν•œ 차의 수(out)

이 λ•Œ, ν„°λ„μ•ˆ μ°¨λŸ‰μ˜ μˆ˜κ°€ 0보닀 μž‘μœΌλ©΄ 0을 좜λ ₯ν•˜κ³ , 그렇지 μ•ŠμœΌλ©΄ μ΄μ „μ˜ μ΅œλŒ“κ°’κ³Ό 비ꡐ해 μ΅œλŒ“κ°’μ„ κ΅¬ν•œλ‹€.

 

 

λ°˜μ‘ν˜•

λŒ“κΈ€