일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring
- 회귀
- Computer Science
- SECS
- spotify
- 자바
- C++
- 스포티파이
- 백준
- Gem
- 프로그래머스
- spring boot
- Spotify Api
- modern c++
- 회원가입
- SWEA
- SW Expert Academy
- CS
- 파이썬
- Baekjoon
- SECS-II
- python
- c
- MYSQL
- Spring JPA
- programmers
- 비트겟
- java
- SECS/GEM
- regression
Archives
- Today
- Total
비버놀로지
[BAEKJOON 백준] 17608 막대기 본문
728x90
문제
아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 6, 9, 7, 6, 4, 6 이다. 일렬로 세워진 막대기를 오른쪽에서 보면 보이는 막대기가 있고 보이지 않는 막대기가 있다. 즉, 지금 보이는 막대기보다 뒤에 있고 높이가 높은 것이 보이게 된다. 예를 들어, 그림과 같은 경우엔 3개(6번, 3번, 2번)의 막대기가 보인다.
N개의 막대기에 대한 높이 정보가 주어질 때, 오른쪽에서 보아서 몇 개가 보이는지를 알아내는 프로그램을 작성하려고 한다.
입력
첫 번째 줄에는 막대기의 개수를 나타내는 정수 N (2 ≤ N ≤ 100,000)이 주어지고 이어지는 N줄 각각에는 막대기의 높이를 나타내는 정수 h(1 ≤ h ≤ 100,000)가 주어진다.
출력
오른쪽에서 N개의 막대기를 보았을 때, 보이는 막대기의 개수를 출력한다.
입력을 받아 배열에 넣어주고, 오른쪽 값부터 시작을 해서 오른쪽 값보다 크다면 결과에 1을 너하고 max 값을 바꿔 준다.
그렇게 가장 왼쪽까지 갔을 때 결과값을 출력해 준다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
int arr[]=new int[N];
for (int i = 0; i < N; i++) {
arr[i]=sc.nextInt();
}
int max=arr[N-1];
int cnt=1;
for (int i = N-2; i >= 0; i--) {
if(max<arr[i]) {
max=arr[i];
cnt++;
}
}
System.out.println(cnt);
}
}
728x90
'ALGORITM > JAVA' 카테고리의 다른 글
[Programmers 프로그래머스] 1845 폰켓몬 (0) | 2021.03.06 |
---|---|
[Programmers 프로그래머스] 72410 신규 아이디 추천 (0) | 2021.03.05 |
[BAEKJOON 백준] 17471 게리맨더링 (0) | 2021.03.05 |
[BAEKJOON 백준] 17413 단어 뒤집기 2 (0) | 2021.03.03 |
[BAEKJOON 백준] 17406 배열 돌리기 4 (0) | 2021.03.03 |
Comments