본문 바로가기
알고리즘

Winter-1DAB_시뮬레이션_2020-02-23

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

시뮬레이션이란?

https://12bme.tistory.com/354

 

[알고리즘] TopCoder 알고리즘 트레이닝(전체탐색과 시뮬레이션 차이)

시뮬레이션은 문제에서 주어진 처리를 수행하기만 하면 되는 간단한 내용입니다. 시뮬레이션 문제는 "이런 과정을 거쳐 나온 결과가 무엇인가?"라고 물어보므로 과정에 따라 코드를 작성하면 됩니다. 하지만 과정..

12bme.tistory.com

해당 문제

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

 

2455번: 지능형 기차

최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다.   내린 사람 수

www.acmicpc.net

 

코드

더보기

_in, _out = list(), list()

 

for i in range(4):

    a,b = map(int,input().split())

    _in.append(b)

    _out.append(a)

 

result = list()

p = 0

for i in range(4):

    p -= _out[i]

    p += _in[i]

    result.append(p)

 

result.sort()

print(result[-1])

 

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

 

1094번: 막대기

지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대를 만들려고 한다. 막대를 자르는 가장 쉬운 방법은 절반으로 자르는 것이다. 지민이는 아래와 같은 과정을 거쳐서 막대를 자르려고 한다. 지민이가 가지고 있는 막대의 길이를 모두 더한다. 처음에는 64cm 막대 하나만 가지고 있다. 이때, 합이 X보다 크다면,

www.acmicpc.net

코드

더보기

x = int(input())

 

a = list()

a.append(64)

 

_sum = 64

while _sum > x:

    tmp = a.pop(0) // 2

    a.append(tmp)

    if sum(a) >= x:

        pass

    else:

        a.append(tmp)

    a.sort()

    _sum = sum(a)

 

print(len(a))

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

 

1966번: 프린터 큐

문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를

www.acmicpc.net

코드

더보기

test = int(input())



def check(queueimportance):

    count = 0

    while queue:

        if queue[0][1] == max(importance):

            if queue[0][0] == m:

                return print(count + 1)

            else:

                importance.remove(queue[0][1])

                queue.pop(0)

                count += 1

        else:

            tmp = queue.pop(0)

            queue.append(tmp)

 

for i in range(test):

    n,m = map(intinput().split())

    a = list()

    importance = list(map(intinput().split()))

    for i in range(len(importance)):

        a.append([i, importance[i]])

    check(a,importance)

 

댓글