백준 막대기

KIMYEONGJUN·2일 전
0
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개의 댓글

관련 채용 정보