:link:문제 링크

[10269 Train Passengers]

:question:문제 설명

열차가 역을 지나갈때마다 하차인원, 승차인원, 기다리는 인원이 주어졌을 때 모순이 없는지 판단하는 문제

:pencil2:코드

import sys
input = sys.stdin.readline


C, N = map(int, input().split())
cur = 0
remain = C
for i in range(N):
    left, entered, stay = map(int, input().split())
    # 열차는 비어있는 상태에서 출발 & 도착 및 마지막 역에서 기다리는 사람 있으면 안됨
    if i == 0:
        if left:
            print("impossible")
            exit()

    # 일단 사람 내보내기
    cur -= left
    if cur < 0:
        print("impossible")
        exit()
    # 내보낸 사람만큼 여유칸 만들기
    remain += left
    if remain > C:
        print("impossible")
        exit()
    # 사람 들여오기
    cur += entered
    remain -= entered
    if cur > C or remain < 0:
        print("impossible")
        exit()
    # 여유있는데 기다리는지 체크
    if stay and remain:
        print("impossible")
        exit()
if cur != 0 or stay or entered:
    print("impossible")
else:
    print("possible")

:memo:풀이

은근 까다로웠던 문제이다..! 열차 시작과 마지막엔 사람이 없어야한다는점 그리고 기다리는 사람도 없어야한다는 조건을 나중에서야 봤다 ㅠㅠ (문제좀 똑바로 제대로 읽자!) 드디어 풀리나 싶었는데 계속 또 틀렸다. 이유는 if stay and remain 이부분이였다. 나는 현재 수용가능 인원보다 기다리는 사람이 적거나 같을 때만 모순이라 생각했는데 그게 아니였다. 그냥 기다리는 사람이 존재하는데 수용가능하다? 그러면 모순이였던것..!! 브론즈 1문제여서 금방 풀릴 줄 알았는데 은근 시간 잡아먹었던 문제!!

댓글남기기