잡동사니 블로그
[백준] 9919 - Route (python) 본문
https://www.acmicpc.net/problem/9919
번역 되었습니다.
문제
시골의 조깅 루트는 루프이기 때문에 출발점이 곧 종점이기도 하다. 1미터 간격의 경로 높이는 해수면 위의 센티미터 단위로 측정 목록으로 제공됩니다.
예 1. 간단한 3미터 경로가 아래에 나와 있습니다. 높이는 다이어그램에서 "극점"으로 표시됩니다. 조깅 방향의 시작점(끝점이기도 한 폴 1)부터 폴의 높이가 10, 20 및 30입니다.
인접한 두 극점 사이의 경로가 직선이라고 가정할 수 있습니다.
경로에서 (1) 평지의 수, (2) 오르막의 수, (3) 내리막의 수를 계산해야 합니다. 평야, 오르막 또는 내리막은 각각 조깅 방향으로 수평, 오르막 또는 내리막인 가장 긴 연속적인 땅입니다. 위의 예에서 하나의 오르막(폴 1에서 폴 2로 그리고 나서 폴 3으로) 하나와 내리막 하나(폴 3에서 다시 폴 1로, 조깅하는 사람이 멈춰야 함)가 있습니다. 평야가 없습니다.
더 많은 예가 아래에 나와 있으며, 쉽게 볼 수 있도록 루프 대신 직선에 "폴"이 그려져 있습니다(그러나 마지막 폴 이후 조깅하는 사람은 첫 번째 폴에서 끝내기 위해 더 멀리 가야 함을 기억하십시오).
예 2. 폴이 6개인 다음 조깅 경로를 고려하십시오.
유일한 평야는 기둥 4에서 5까지입니다. 두 개의 오르막은 기둥 1에서 3까지 그리고 기둥 6에서 1까지입니다. 두 개의 내리막은 기둥 3에서 4까지와 기둥 5에서 6까지입니다.
예 3. 이제 7폴 조깅 경로를 고려하십시오.
3개의 평야는 극 1~2, 극 3~4, 극 5~1입니다. 유일한 오르막은 극 2~3입니다. 유일한 내리막은 극 4~5입니다.
예 4. 다음은 9폴 조깅 경로입니다.
유일한 평야는 기둥 9에서 1까지입니다. 두 개의 오르막 경사는 기둥 1에서 3과 기둥 5에서 7입니다. 두 개의 내리막은 기둥 3에서 5와 기둥 7에서 9입니다.
- 입력값을 읽어 경로의 길이 N(미터 단위)(3 ≤ N ≤ 30,000)과 높이 H i , 1 ≤ i ≤ N, 해발 센티미터 단위(1 ≤ H i ≤ 30,000)를 구합니다. 모든 값은 양의 정수입니다.
- 평지, 오르막, 내리막의 수를 계산합니다.
- 3개의 숫자를 이 순서대로 한 줄에 출력에 쓰십시오: 평지의 수, 오르막의 수, 내리막의 수.
입력
입력에는 첫 번째 줄에 미터 단위의 경로 길이인 정수 N이 포함됩니다. 후속 N 라인에는 조깅 방향의 폴 높이(해수면 위 센티미터)가 포함됩니다. 이러한 N 라인의 첫 번째, 두 번째, ..., 마지막에는 첫 번째, 두 번째, ..., 각각 마지막 기둥.
출력
출력에는 평지 수, 오르막 수, 내리막 수의 순서로 한 줄에 3개의 숫자가 포함되어야 합니다. 인접한 두 숫자 사이에는 공백이 있어야 합니다.
예제 입력 1
3
10
20
30
예제 출력 1
0 1 1
예제 입력 2
6
20
23
60
50
50
12
예제 출력 2
1 2 2
예제 입력 3
7
10
10
30
30
10
10
10
예제 출력 3
3 1 1
예제 입력 4
9
10
20
30
20
10
20
30
20
10
예제 출력 4
1 2 2
풀이
import sys
input = sys.stdin.readline
flat,up,down=0,0,0
count=int(input())
a=[0] * (count+1)
a[0] = int(input())
flag=0
for i in range(1,count+1):
if i < count :
a[i] = int(input())
else :
a[i] = a[0]
if a[i] == a[i-1] and flag != 1 :
flat +=1
flag = 1
elif a[i] > a[i-1] and flag != 2 :
up +=1
flag = 2
elif a[i] < a[i-1] and flag != 3 :
down +=1
flag = 3
print(flat, up, down)
처음 N 만큼의 길이를 가진 배열을 선언하여 반복문을 돌며 flag 변수에 따라 평지 오르막 내리막을 구분 하였음.
모든 리스트가 담긴 a에서 a[i]는 a[i-1]랑 비교했을 때 flag를 통해 평지 오르막 내리막을 판단하였고, 마지막에는 돌아오기 때문에 원래의 처음 값인 a[0]을 다시 추가하여 판별 하였음.
나름 쉬웠던 문제 같습니다.
'Python > 백준' 카테고리의 다른 글
[백준] 1337 - 완벽한 배열 (python) (0) | 2023.05.25 |
---|---|
[백준] 2468 - 안전영역 (python) (0) | 2023.05.07 |
[백준] 18186 - 라면 사기(Large) (python) (0) | 2023.04.17 |
[백준] 1003 - 피보나치 함수 (python) (0) | 2023.04.11 |
[백준] 1339 - 단어 수학 (python) (0) | 2023.03.29 |