• 문제 링크
17608번: 막대기
아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로
www.acmicpc.net
• 풀이 과정
stack에 각 막대기의 높이를 push하고 모두 pop한다.
peek하여 최대 높이가 이후 꺼낼 높이보다 높다면 cnt++를 수행하고,
높이는 최대값으로 갱신해 오른쪽에서 현재 최대 높이보다 낮은 막대기는 볼 수 없는 조건을 만족시킨다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Stack<Integer> stk = new Stack<>();
while (n-- > 0)
stk.push(Integer.parseInt(br.readLine()));
int max = stk.pop(), cnt = 1;
while (!stk.empty()) {
if (max < stk.peek())
cnt++;
max = Math.max(max, stk.pop());
}
bw.write(String.valueOf(cnt));
bw.flush();
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 10546 배부른 마라토너 - Data Structure / Java (0) | 2023.03.18 |
---|---|
[백준] 1235 학생 번호 - Data Structure / Java (0) | 2023.03.17 |
[백준] 12605 단어순서 뒤집기 - Data Structure / Java (0) | 2023.03.15 |
[백준] 4889 안정적인 문자열 - Data Structure / Java (0) | 2023.03.14 |
[백준] 2002 추월 - Data Structure / Java (0) | 2023.03.13 |
댓글