1번: 내가 작성한 코드 (max 이용)
trophies = []
left, right = 1, 1
n = int(input())
for _ in range(n):
trophies.append(int(input()))
max_before, highest = 0, max(trophies)
for x in range(n):
if max_before < trophies[x] and trophies[x] < highest:
left += 1
max_before = max(trophies[:x+1])
max_before, highest = 0, max(trophies)
trophies = trophies[::-1]
for x in range(n):
if max_before < trophies[x] and trophies[x] < highest:
right += 1
max_before = max(trophies[:x+1])
print(left, right, sep='\n')
2번: 1번 성공 후 참고한 코드(오름차순 정렬 활용)
def ascending(array):
now = array[0]
result = 1
for x in range(1, len(array)):
if now < array[x]:
result += 1
now = array[x]
return result
n = int(input())
array = []
for _ in range(n):
array.append(int(input()))
print(ascending(array))
array.reverse()
print(ascending(array))
3. 느낀 점
- 풀면서도 뭔가 코드가 깔끔하게 나오지 않고, 계속 찝찝했다. (성공한 이후에도)
생각해보니, 어쩌면 문제의 핵심이라 할 수 있는 오름차순 정렬을 제대로 짚어내지 못해서이지 않을까 싶다.
- 두 코드의 성능은 비슷하나 2번 코드의 길이가 꽤 짧다. 짧아서 무조건 좋다기 보다, 재활용성 및 가독성의 차이를
느꼈다. 이 두 가지를 생각하며 코드를 짜야겠다. reverse() 등의 함수도 새롭게 봤으니 필요할 때 사용해봐야겠다.
'> 알고리즘 문제 풀이 > BOJ' 카테고리의 다른 글
15969-행복 (python, 파이썬) (0) | 2020.10.14 |
---|---|
1236-성 지키기 (python, 파이썬) (0) | 2020.10.14 |
1302-베스트셀러 (python) (0) | 2020.10.13 |
1568-새 (python) (0) | 2020.10.13 |
11004-K번째 수 (python) (0) | 2020.10.12 |
댓글