Algorithm/λ°±μ€€

λ°±μ€€ 17608번 - λ§‰λŒ€κΈ°

giraffe_ 2022. 8. 21. 16:06

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

 

17608번: λ§‰λŒ€κΈ°

μ•„λž˜ 그림처럼 λ†’μ΄λ§Œ λ‹€λ₯΄κ³  (같은 λ†’μ΄μ˜ λ§‰λŒ€κΈ°κ°€ μžˆμ„ 수 있음) λͺ¨μ–‘이 같은 λ§‰λŒ€κΈ°λ₯Ό 일렬둜 μ„Έμš΄ ν›„, μ™Όμͺ½λΆ€ν„° μ°¨λ‘€λ‘œ 번호λ₯Ό 뢙인닀. 각 λ§‰λŒ€κΈ°μ˜ λ†’μ΄λŠ” κ·Έλ¦Όμ—μ„œ 보인 κ²ƒμ²˜λŸΌ μˆœμ„œλŒ€λ‘œ

www.acmicpc.net

 

 

 

 

 

 

μ˜ˆμ „μ— ν’€μ—ˆλ˜ λ°±μ€€μ˜ 탑 문제(https://www.acmicpc.net/problem/2493)와 λΉ„μŠ·ν•˜λ‹€κ³  μƒκ°ν–ˆλ‹€. 각각의 높이가 λ‹€λ₯΄κ³ , μ–΄λŠ ν•œμͺ½μ—μ„œ λ³΄μ•˜μ„ λ•Œ 뒀에 μžˆλŠ” 것듀이 λ³΄μ΄λŠ”μ§€λ₯Ό νŒλ‹¨ν•΄μ•Ό ν•œλ‹€. 탑 문제의 해섀을 λ“€μ—ˆμ„ λ•Œ, μŠ€νƒμ„ μ‚¬μš©ν•΄μ„œ ν’€ 수 μžˆλ‹€κ³  ν•΄μ„œ 이 λ¬Έμ œλ„ μŠ€νƒμœΌλ‘œ μ ‘κ·Όν•΄μ„œ ν’€μ—ˆλ‹€.

 

 

 

 

 

였λ₯Έμͺ½μ—μ„œ λ³΄μ•˜μ„ λ•Œ, 제일 였λ₯Έμͺ½μ— μžˆλŠ” 것보닀 큰 κ²ƒλ§Œ λ‚¨μ•„μžˆμ–΄μ•Ό ν•œλ‹€.

μŠ€νƒμ— hλ₯Ό μŒ“λŠ”λ°, 후에 큰 hκ°€ λ“€μ–΄μ˜¬ λ•Œλ§ˆλ‹€ μŠ€νƒμ—μ„œ h보닀 μž‘μ€ 것듀을 λΉΌμ€€λ‹€.

그리고 λ‹€ 빼쀬으면 hλ₯Ό λ„£λŠ”λ‹€.

 

λ§ˆμ§€λ§‰μ— μŠ€νƒμ˜ μ‚¬μ΄μ¦ˆλ₯Ό 좜λ ₯ν•˜λ©΄ λœλ‹€.

 

 

 

 

 

μ½”λ“œ

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

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		
		Stack<Integer> stack = new Stack<>();

		int h = Integer.parseInt(br.readLine());
		stack.push(h);
		
		for(int i = 1; i < N; i++) {
			h = Integer.parseInt(br.readLine());
			
			while(true) {
				if(!stack.isEmpty() && h >= stack.peek()) {
					stack.pop();
				}else {
					stack.push(h);
					break;
				}
			}
			
		}
		
		System.out.println(stack.size());
	}

}

 

 

 

 

 

 

κ²°κ³Ό