자바 백준 17608번
브론즈 2
https://www.acmicpc.net/problem/17608
문제 보기

분류: 구현, 자료 구조, 스택
코드 풀이
import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 막대기의 개수를 입력 int N = sc.nextInt(); int[] heights = new int[N]; // 막대기의 높이를 저장할 배열 // 각 막대기의 높이를 입력받아 배열에 저장 for (int i = 0; i < N; i++) { heights[i] = sc.nextInt(); } // 보이는 막대기의 개수를 계산 int visibleCount = countVisibleBars(heights); // 결과 출력 System.out.println(visibleCount); } // 오른쪽에서 보이는 막대기의 개수를 계산하는 메서드 private static int countVisibleBars(int[] heights) { Stack<Integer> stack = new Stack<>(); // 막대기의 높이를 저장할 스택 int count = 0; // 보이는 막대기의 개수 카운트 // 막대를 오른쪽에서 왼쪽으로 확인 for (int i = heights.length - 1; i >= 0; i--) { // 스택이 비어 있거나 현재 막대기가 스택의 top보다 높으면 보이는 막대기 if (stack.isEmpty() || heights[i] > stack.peek()) { count++; // 보이는 막대기 개수 증가 stack.push(heights[i]); // 현재 막대기의 높이를 스택에 추가 } } // 보이는 막대기의 개수를 반환 return count; } }
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 6322 - 직각 삼각형의 두 변 (0) | 2025.01.18 |
---|---|
[Java] 백준 풀기 8723 - Patyki (2) | 2024.12.27 |
[Java] 백준 풀기 4458 - 첫 글자를 대문자로 (0) | 2024.11.26 |
[Java] 백준 풀기 5554 - 심부름 가는 길 (2) | 2024.11.24 |
[Java] 백준 풀기 5724 - 파인만 (0) | 2024.10.12 |