본문 바로가기
알고리즘

백준_1021_회전하는 큐(시뮬레이션)

by 매화of사군자 2020. 2. 26.

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

 

1021번: 회전하는 큐

첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 순서대로 주어진다. 위치는 1보다 크거나 같고, N보다 작거나 같은 자연수이다.

www.acmicpc.net

해결 방법

> 시뮬레이션이라 조건을 따라가면 풀린다.

> 조건 1,2,3에 해당하는 함수를 만들었다.

> 인덱스를 비교하면서 1,2,3 함수를 적절히 사용하면 풀린다.

 

코드

더보기

size, num = map(intinput().split())

 

find = list(map(int,input().split()))

source = [i for i in range(1, size + 1)]

 

def one(_list):

    _list = _list[1:]

    return _list

 

def two(_list):

    tmp = _list.pop(0)

    _list.append(tmp)

    return _list

 

def three(_list):

    tmp = _list.pop()

    _list.insert(0,tmp)

    return _list

 

count = 0

for i in find:

    while i != source[0]:

        _index = source.index(i)

        list_size = len(source)

        if _index > list_size//2:

            count += 1

            source = three(source)

        else:

            count += 1

            source = two(source)

    source = one(source)

print(count)

'알고리즘' 카테고리의 다른 글

선분 교차 알고리즘  (0) 2020.02.29
백준_1057_토너먼트(시뮬레이션)  (0) 2020.02.28
백준_3190_뱀(시뮬레이션)  (0) 2020.02.26
백준_14499_주사위 굴리기(시뮬레이션)  (0) 2020.02.25
백준_14503_로봇청소기  (0) 2020.02.25

댓글