[python]白俊10755-空港解答
10553 ワード
Overview
BOJ 10775空港Python回答
分類:分離セット(Disjoint Set,Union Find)
質問ページ
https://www.acmicpc.net/problem/10775
プールコード1-Union Find
"""
해석하기 쉽게 고침
union, find 함수를 기본으로 사용
"""
from sys import stdin
parents = []
def find(x: int) -> int:
if x == parents[x]:
return x
parents[x] = find(parents[x])
return parents[x]
# 패러미터를 받을 때, x < y 이도록 받기
def union(x: int, y: int) -> None:
x, y = find(x), find(y)
parents[y] = x
def main():
def input():
return stdin.readline().rstrip()
global parents
g = int(input())
p = int(input())
planes = [int(input()) for _ in range(p)]
parents = list(i for i in range(g + 1))
cnt = 0
for plane in planes:
plane = find(plane)
# 도킹 가능한 게이트가 없는 경우
if plane == 0:
break
union(plane - 1, plane)
cnt += 1
print(cnt)
if __name__ == "__main__":
main()
飛行機がドッキングするたびに、find()
でドッキング可能なドアを探します.find()
の戻り値が0の場合、ドッキングステーションがないことを意味します.逆に、0より大きい値を返す場合は、値から1を減算した値を値に結合します.プールコード2-グレースケールアルゴリズム(タイムアウト)
from sys import stdin
def main():
def input():
return stdin.readline().rstrip()
g = int(input())
p = int(input())
planes = [int(input()) for _ in range(p)]
res = 0
gates = [False] * (g + 1)
for plane in planes:
while plane > 0 and gates[plane]:
plane -= 1
if plane == 0:
break
gates[plane] = True
res += 1
print(res)
if __name__ == "__main__":
main()
採点結果はタイムアウトを示した.飛行機が駅に入るたびに、停泊できる最も価値のある関門に停泊し、答えを求めます.
Reference
この問題について([python]白俊10755-空港解答), 我々は、より多くの情報をここで見つけました https://velog.io/@boorook/Python-백준-10775-공항-문제-풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol