ABC86 C - 여행으로 자신의 성장을 느꼈다.






t,x,y를 받을 때마다 NG 조건에 걸리지 않습니까?
봐주면 좋다.

일단 쓰면,
For의 중첩도 불필요했기 때문에,
어쩌면 갈 수 있다고 밟았다.

Traveling.py
from sys import exit
N = int(input())
rear = 0
x0,y0 = 0,0
for _ in range(N):
    curent,x1,y1 = map(int,input().split())
    if curent-rear == abs(x1-x0)+abs(y1-y0):
        x0,y0 = x1,y1
        pass
    elif curent-rear < abs(x1-x0)+abs(y1-y0):
        print("No")
        exit()
    else:#<= 注意!
        diff = (curent-rear) - (abs(x1-x0)+abs(y1-y0))
        if diff%2 != 0:
            print("No")
            exit()
    rear = curent
print("Yes")

위에서 일단 다녔지만. 어쩌면 위의 코드에는 문제가 있습니다.
댓글에있는 것처럼 "주의!"개소를 통과하면,
그것이 연속될 가능성도 있기 때문에 x0,y0 = x1,y1 를 추기해야 할지도.
※그렇다고 하는 것은. 초과한 분을 근단에서 왕복하는 것으로 장소하는 좌표의 일.

Traveling.py
from sys import exit
N = int(input())
rear = 0
x0,y0 = 0,0
for _ in range(N):
    curent,x1,y1 = map(int,input().split())
    if curent-rear == abs(x1-x0)+abs(y1-y0):
        x0,y0 = x1,y1
        pass
    elif curent-rear < abs(x1-x0)+abs(y1-y0):
        print("No")
        exit()
    else:
        diff = (curent-rear) - (abs(x1-x0)+abs(y1-y0))
        if diff%2 != 0:
            print("No")
            exit()
        else:
            x0, y0 = x1, y1 # <= もし超過した分を近端で往復することで帳消しにする座標が連続する場合は
                            #    ちゃんと座標を保存して次に行かないと WA になる。
    rear = curent
print("Yes")

성장을 느꼈을텐데,
미숙함을 느낀 문제이기도했다 (웃음)

좋은 웹페이지 즐겨찾기