Notice
Recent Posts
Recent Comments
Link
CodeClover
[JAVA] 백준_17608 막대기 본문
[문제링크] https://www.acmicpc.net/problem/17608
📌 문제 탐색하기
현재까지 본(?) 막대기중에서 가장 높은 막대기의 개수를 구하는 문제입니다.
( 조건 => 오른쪽에서 봤을때 보이는 막대기의 개수 구하는 문제 )
📌 가능한 시간복잡도
가능한 시간복잡도는 O(N)입니다.
📌 코드 설계하기
오른쪽에서부터 역순으로 지금까지 가장 높았던 막대보다 높은 경우가 있으면 COUNT++;하면 된다.
📌 정답 코드
import java.io.*;
import java.util.*;
public class Main {
public static int solution(int[] sticks) {
int count = 0;
int maxHeight = 0;
for (int i = sticks.length - 1; i >= 0; i--) {
if (sticks[i] > maxHeight) {
count++;
maxHeight = sticks[i];
}
}
return count;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] sticks = new int[N];
for (int i = 0; i < N; i++) {
sticks[i] = Integer.parseInt(br.readLine());
}
int visibleCount = solution(sticks);
System.out.println(visibleCount);
}
}
'코딩테스트' 카테고리의 다른 글
[JAVA] 백준_1268 임시 반장 정하기 (1) | 2025.04.27 |
---|---|
[Python] 백준_ 도시와 비트코인 (1) | 2025.04.26 |
[JAVA] 백준_1343 폴리오미노 (0) | 2025.04.24 |
[Python] 백준_26168 배열 전체 탐색하기 (0) | 2025.04.23 |
[JAVA] 백준_2828 사과 담기 게임 (0) | 2025.04.22 |