https://www.acmicpc.net/problem/2872

 

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

상근이는 컴퓨터 공학의 일인자가 되기 위해 책을 매우 많이 구매했다. 하지만, 집에 책장이 없어서 책을 탑처럼 쌓아놓고 있다. 오늘은 오랜만에 상근이가 집에서 휴식을 취하는 날이다. 상근

www.acmicpc.net

 


풀이 과정


  1. 맨 오른쪽에서부터 왼쪽으로 진행하면서 N을 찾는다.
  2. N이 아니라면 옮겨야 되는 값이므로 횟수를 하나 증가시킨다.
  3. N이라면 찾아야 하는 값을 N-1로 줄여서 현재 위치에서부터 찾는다.
  4. 2-3을 맨 왼쪽까지 반복한다.

- 위 과정을 반복하면 찾아야 하는 값 기준으로 왼쪽에서 보았을 때 증가하는 수열이 나온다.(맨 마지막 값이 N)

- 또한, 옮겨야 되는 값들은 큰것부터 작은것 순으로 맞추어서 앞에 넣어주기만 하면 되기 때문에 결국 (2)에서 구한 횟수를 그대로 리턴해주면 된다. 

- 생각보다 잘 안풀리는 문제였음

 


소스 코드


import sys

input = lambda: sys.stdin.readline().rstrip()
N = int(input())
books = [int(input()) for _ in range(N)]

find_target = N
answer = 0
for i in range(N-1, -1, -1):
    if books[i] != find_target:
        answer += 1
    else:
        find_target -= 1

print(answer)

'알고리즘[Python] > 백준 알고리즘' 카테고리의 다른 글

[ 2250 ] [ Tree ] 트리의 높이와 너비  (0) 2021.11.16
[ 16397 ] [ BFS ] 탈출  (0) 2021.11.13
[ 10812 ] 바구니  (0) 2021.11.10
[ 3055 ] [ BFS ] 탈출  (0) 2021.11.09
[ 1449 ] [ Greedy ] 수리공 항승  (0) 2021.11.08

+ Recent posts