Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
자연수가 들어있는 리스트가 있습니다.
이 리스트에서, 숫자가 연속해서 증가하는 가장 긴 구간의 길이를 구하려 합니다.
단, 바로 전 숫자와 현재 숫자가 같은 경우는 증가한 것으로 보지 않습니다.
예를 들어 리스트에 순서대로 [3, 1, 2, 4, 5, 1, 2, 2, 3, 4]가 들어있는 경우, [1, 2, 4, 5]가 들어있는 구간이 숫자가 연속해서 증가한 가장 긴 구간이며, 길이는 4입니다.
자연수가 들어있는 리스트 arr가 매개변수로 주어질 때, 숫자가 연속해서 증가하는 가장 긴 구간의 길이를 return 하도록 solution 함수를 완성해주세요.
매개변수 설명
자연수가 들어있는 리스트 arr가 solution 함수의 매개변수로 주어집니다.
- arr의 길이는 2 이상 200,000 이하입니다.
- arr의 원소는 1 이상 1,000,000 이하의 자연수입니다.
return 값 설명
숫자가 연속해서 증가하는 가장 긴 구간의 길이를 return 해주세요.
- 길이가 2 이상인 증가하는 구간이 없다면 1을 return 해주세요.
예시
예시 설명
숫자 [1, 2, 4, 5]가 들어있는 구간이 숫자가 연속해서 증가하는 가장 긴 구간이며, 길이는 4입니다.
현재 숫자가 바로 이전 숫자와 같은 경우에는 증가했다고 보지 않습니다.
[1, 2, 2, 3, 4]가 들어있는 구간은 [2, 2]가 연속해서 증가한 부분이 아니므로, [1, 2]가 들어있는 구간과 [2, 3, 4]가 들어있는 구간으로 나누어야 합니다.
풀이
풀이 코드 및 해설
def solution(arr):
answer = 0
temp = [0 for x in range(len(arr))] # 전달된 리스트와 동일한 크기의 리스트 생성
idx = 0
for i in range(len(arr)-1): # 리스트의 크기 -1만큼 반복 순회
if arr[i] < arr[i+1]: # 현재 리스트의 크기보다 다음 리스트의 요소가 더 크면
temp[idx] += 1 # temp 리스트에 누적
else: # 만약 작을 경우
idx += 1 # 새롭게 누적해야하기 때문에 idx 증가
answer = max(temp)+1 # 비교할 때 자신까지 포함하기 때문에 +1를 해줘야 함.
if answer < 2: # answer가 2보다 작은 경우는 1 반환
return 1
return answer # 연속된 큰 요소가 발견된 경우에는 최대 누적된 값인 answer 반환
'Certificate > Cert - Cos Pro 1급' 카테고리의 다른 글
[Cos Pro 1급] 기출문제 2회차, 거스름돈 구하기 (0) | 2021.07.14 |
---|---|
[Cos Pro 1급] 기출문제 2회차, 로봇을 움직여주세요 (0) | 2021.07.14 |
[Cos Pro 1급] 기출문제 2회차, 합이 k 배가 되는 수 (0) | 2021.07.14 |
[Cos Pro 1급] 기출문제 2회차, 경품 당첨자를 구해주세요 (0) | 2021.07.14 |
[Cos Pro 1급] 기출문제 2회차, 지하철 기다리기 (0) | 2021.07.14 |