본문 바로가기
> 알고리즘 문제 풀이/BOJ

1668-트로피 진열 (python, 파이썬)

by bky373 2020. 10. 13.

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

댓글