백준 막대기

KIMYEONGJUN·2025년 2월 21일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 수 X와 Y가 주어진다. X와 Y는 1,000보다 작거나 같은 자연수이다.

첫째 줄에 문제의 정답을 출력한다.

내가 이 문제를 보고 생각해본 부분

입력 처리: BufferedReader를 사용하여 입력을 받는다.
첫 번째 줄에서 막대기 개수 N을 읽고, 다음 N줄에서 각 막대기의 높이를 배열에 저장한다.
보이는 막대기 계산: 오른쪽에서부터 왼쪽으로 막대를 순회하면서 현재 막대기의 높이가 이전에 기록된 최대 높이보다 크면 보이는 막대로 카운트한다. 그 후, 최대 높이를 갱신해준다.
출력: 결과는 StringBuilder를 사용하여 한 번에 출력한다.

코드로 구현

package baekjoon.baekjoon_26;

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

// 백준 1357번 문제
public class Main939 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());
        int[] heights = new int[N];

        for(int i = 0; i < N; i++) {
            heights[i] = Integer.parseInt(br.readLine());
        }

        int visibleCount = 0;
        int maxHeight = 0;

        // 오른쪽에서부터 왼쪽으로 막대를 확인
        for(int i = N - 1; i >= 0; i--) {
            if (heights[i] > maxHeight) {
                visibleCount++;
                maxHeight = heights[i];
            }
        }

        sb.append(visibleCount).append("\n");
        System.out.print(sb.toString());
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글