[BOJ]1931会議室(Python)の手配


🥳最初の銀色の1つの問題!👏👏

質問する


N個の会議については,各会議を重ねるのではなく,会議室を利用できる最大会議数を見出す.

コード#コード#

import sys
N=int(sys.stdin.readline())
li=[list(map(int,sys.stdin.readline().split())) for j in range(N)]
li.sort()
std=li[0]
cnt=1
for i in range(1,N):
    if (std[1]-std[0]) > (li[i][1]-li[i][0]) and std[1]>li[i][1]:
        std=li[i]
    elif std[1]<=li[i][0]:
        cnt+=1
        std=li[i]
print(cnt)

解答と感想


この問題で初めてPython二重リストを使いました.2つのマルチライン入力を受け取った後、2 Dは1 Dリストより良いと思います.どうやって解くか考えていると入力値があまりにも不規則に見えて解決策が思いつかないので、便宜上sort関数を書きました.この過程で大きな助けを得た.
ソート後の入力値から、同じ開始時間でも終了時間に差があり、開始時間が遅くても終了時間が早い.これにより,会議時間が短く,終了時間が速い場合を基準点とし,後の時間に来る可能性のある会議数を加えて問題を解決することができる.
先週中に実力をつけてSilver 3の問題をやろうと思っていたが、今週はSilver 1の問題ができるようになった.もちろん、この問題を解決すればすべてのSilver 1問題を解決できるというわけではありませんが、ある程度、先週の目標に合った成果を上げることができて、とても嬉しいです.
私の主な目標は今月中に金メダル問題を解き、プログラマーの中で1~2級問題を解くことです.