Skip to content

Latest commit

 

History

History
68 lines (55 loc) · 1.59 KB

File metadata and controls

68 lines (55 loc) · 1.59 KB

백준 2872번 우리집엔 도서관이 있어

2872


코드 설명

  • 입력받은 값들을 리스트에 넣은 뒤 swap하는 값과 하지 않는 값을 구분한다. -> max 이용
  • 입력받을 때 input을 쓰면 시간초과가 난다. -> sys 사용

소스코드

  • 메모리 : 42616 KB
  • 시간 : 276 ms
import sys
n=int(input())
swap = 0
book = []
for _ in range(n):
    book.append(int(sys.stdin.readline()))

max = book[0]

for i in range(1,n) : 
    if book[i] > max :
        if max+1 != book[i] :
            swap +=1
        max = book[i]
    else :
        swap +=1

print(swap)

오답 노트

  • deque를 이용해 insert할 때 시간을 줄이려고 했으나 while문 자체에서 이미 시간초과가 나기 때문에 의미 없었다.
  • swap을 한 뒤 다시 처음으로 돌아가 반복하기 때문에 비효율적이다.
  • 인덱스 범위를 통해 break 조건을 만들었기 때문에 1234 가 나와도 4번 돌아야 확인이 가능하다.

오답 코드

from collections import deque

n = int(input())
book = deque()
swap = 0
for _ in range(n):
    book.append(int(input()))
book.append(300001)

index = 0
while 1:
    if index >= n:
        break
    if book[index] > book[index+1]:
        swap += 1
        temp = book[index+1]
        del book[index+1]
        book.appendleft(temp)
        index = 0
    else:
        index += 1
        
print(swap)