Search

브론즈

17608. 막대기

마지막에 들어간 값은 무조건 보이니까 count = 1 초기화
마지막값을 기준으로 시작해서 맨 처음 입력값부터 순서대로 최댓값을 갱신해나간다.
기존의 최댓값보다 크다면 count += 1
sys.stdin.readline()
→ 한 두줄을 받는 input() 과 다르게 반복문으로 여러 번 입력받아야 할 경우 input() 으로 받으면 시간초과가 발생할 수 있다.
한개의 정수를 입력받을 때 : ‘한 줄을 입력’ 받기 때문에 ‘\n’이 함께 입력받아진다. → 개행문자 제거해야 하므로 아래와 같이 사용
import sys a = int(sys.stdin.readline())
Python
복사
정해진 개수의 정수를 한줄에 입력받을 때 : map(), split() 함수 이용
import sys a,b,c = map(int,sys.stdin.readline().split())
Python
복사
임의의 개수의 정수를 한줄에 입력받아 리스트에 저장할 때 : list() 함수 사용
import sys data = list(map(int, sys.stdin.readline().split()))
Python
복사
임의의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장할 때:
각 요소의 길이가 동일한 2차원 리스트를 만들 수도, 길이가 다른 2차원 리스트를 만들 수도 있다.
import sys data = [] n = int(sys.stdin.readline()) for i in range(n): data.append(list(map(int,sys.stdin.readline().split())))
Python
복사
문자열 n줄 입력받아 리스트에 저장할 때
import sys n = int(sys.stdin.readline()) data = [sys.stdin.readline().strip()for i in range(n)]
Python
복사
 정답
import sys N = int(sys.stdin.readline()) # 막대기의 개수 입력 stack = [] count = 1 for _ in range(N): # _ 는 그냥 인덱스를 무시할 때 stack.append(int(sys.stdin.readline())) # 먼저 가장 마지막으로 들어온 값이 최댓값 max = stack[-1] # 뒤에서부터 차근차근 올라오면서 max값을 갱신해준다. for i in range(len(stack)-1,-1,-1): if stack[i] > max : count += 1 max = stack[i] print(count)
Python
복사