해당 문제를 확인하시고 싶으면 아래 링크를 통해 확인해주세요!
https://www.acmicpc.net/problem/2491
"""
백준 2491 (S4): 수열
https://www.acmicpc.net/problem/2491
(시간초과 실패)
"""
n = int(input())
data = list(map(int, input().split()))
result = []
for i in range(n-1):
upCount = 0
downCount = 0
tIdx = i
for j in range(i+1, n):
if data[tIdx] <= data[j]:
upCount += 1
tIdx = j
else:
tIdx = i
break
for j in range(i+1, n):
if data[tIdx] >= data[j]:
downCount += 1
tIdx = j
else:
break
temp = (upCount, downCount)
result.append(temp)
result = [max(d) for d in result]
print(max(result) + 1)
되게 복잡하게 코드를 작성했다. 각 원소마다 체크를 했다. 상향세는 몇까지, 하향세는 몇까지.
하지만 반복문이 총 4번이 들어가면서 시간초과 에러가 난 것 같다.
하나 더 알았는데 만약에 길이가 1이면 이 코드는 실행되지 않았다. 그 부분을 확인하지 못했다.
"""
백준 2491 (S4): 수열
https://www.acmicpc.net/problem/2491
"""
n = int(input())
data = list(map(int, input().split()))
if n == 1:
print(1)
exit(0)
result = 0
upCount = 0
downCount = 0
# 상승세 확인
for i in range(1, n):
if data[i-1] <= data[i]:
upCount += 1
else:
upCount = 0
if result < upCount:
result = upCount
# 감소세 확인
for i in range(1, n):
if data[i-1] >= data[i]:
downCount += 1
else:
downCount = 0
if result < downCount:
result = downCount
print(result + 1)
n == 1일때 exit은 내가 직접 작성한 코드이다. 1이면 정답은 무조건 1이기 때문에 종료해버린다.
왜 이생각을 못했을까?
위의 코드는 최대 길이변수를 정해서 대체해주는 방식.... 예를들어 계속 상승세였다가 하향세로 갑자기 떨어지면 count를 0으로 세팅한다.
그리고 최대길이가 측정한 길이보다 크면 측정한 길이로 대체해주면 내가 짠 코드처럼 반복문이 많이 필요없게된다.
항상 다른 개발자님들의 코드를 보고나면 현타가 온다.
문제를 풀때도 아 이렇게까지 코드 길게 안쳐도 될거같은데 하면서도 치고있는 1인..
부스트캠프 8기가 얼마 남지 않았는데.. 무섭다 무서워
자신감이 조금씩 떨어진다.. 후들들...
이게 실버4라는데... 실버1짜리는 손도 못대겠ㄷ..