반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 17608번 막대기 파이썬(Python)
1) 문제번호 : 17608번
2) 문제 출처
2. 문제
아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 6, 9, 7, 6, 4, 6 이다. 일렬로 세워진 막대기를 오른쪽에서 보면 보이는 막대기가 있고 보이지 않는 막대기가 있다. 즉, 지금 보이는 막대기보다 뒤에 있고 높이가 높은 것이 보이게 된다. 예를 들어, 그림과 같은 경우엔 3개(6번, 3번, 2번)의 막대기가 보인다.
N개의 막대기에 대한 높이 정보가 주어질 때, 오른쪽에서 보아서 몇 개가 보이는지를 알아내는 프로그램을 작성하려고 한다.
3. 제약사항
-
4. 입력
첫 번째 줄에는 막대기의 개수를 나타내는 정수 N (2 ≤ N ≤ 100,000)이 주어지고 이어지는 N줄 각각에는 막대기의 높이를 나타내는 정수 h(1 ≤ h ≤ 100,000)가 주어진다.
5. 출력
오른쪽에서 N개의 막대기를 보았을 때, 보이는 막대기의 개수를 출력한다.
6. 풀이
- 리스트에 값을 넣고, 최대값을 리스트의 맨 오른쪽으로 잡아준다.
- 맨 오른쪽은 무조건 보이기 때문에 보이는 막대기의 수의 변수인 result는 1로 두고, Max보다 크면 막대기가 보이는 것이기 때문에 result를 1 증가시키고, Max값을 Max보다 큰 정수로 잡으면서 리스트를 탐색한다.
7. 소스 코드
import sys
#막대기의 개수
N = int(sys.stdin.readline())
stack = []
#보이는 막대기 개수
#1로 두는 이유는 맨 오른쪽에 있는 막대기는 무조건 보이기 때문에
result = 1
for _ in range(N) :
stack.append(int(sys.stdin.readline()))
#최대값은 스택의 맨 오른쪽
Max = stack[-1]
#맨 뒤에서 Max보다 크면 막대기가 보이므로, result를 1 증가시키고, Max는 Max보다 큰 값으로 설정
for i in range(len(stack)-1, -1, -1) :
if stack[i] > Max :
result+=1
Max = stack[i]
print(result)
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 10872번 팩토리얼 파이썬(Python) (0) | 2021.05.13 |
---|---|
[백준 알고리즘] 백준 1058번 친구 파이썬(Python) (0) | 2021.05.10 |
[백준 알고리즘] 백준 14593번 2017 아주대학교 프로그래밍 경시대회 (Large) 파이썬(Python) (0) | 2021.05.08 |
[백준 알고리즘] 백준 14592번 2017 아주대학교 프로그래밍 경시대회 (Small) 파이썬(Python) (0) | 2021.05.08 |
[백준 알고리즘] 백준 12605번 단어순서 뒤집기 파이썬(Python) (0) | 2021.05.04 |
[백준 알고리즘] 백준 10828번 스택 파이썬(Python) (0) | 2021.05.04 |
[백준 알고리즘] 백준 10799번 쇠막대기 파이썬(Python) (0) | 2021.05.01 |
[백준 알고리즘] 백준 16948번 데스 나이트 자바(Java) (0) | 2021.04.29 |
최근댓글