본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 25165번 영리한 아리의 포탈 타기

by 현장 2022. 5. 27.

-Code

n, m = map(int, input().split())
a, d = map(int, input().split())
sr, sc = map(int, input().split())
result = "NO..."
if sr == n and n % 2 == (d + 1) % 2:
    result = "YES!"
print(result)

1) 처음 코드

n, m = map(int, input().split())
Map = [[0] * (m + 1) for _ in range(n + 1)]
a, d = map(int, input().split())
sr, sc = map(int, input().split())
Map[sr][sc] = 'M'
result = "YES!"
x, y = a, m // 2
move = 1
if d == 0:
    move = -1
while 0 < x <= n and 0 < y <= m:
    if y == 1 or y == m:
        x += 1
        move *= -1
        if Map[x][y] == 'M':
            result = "NO..."
            break
    if Map[x][y] == 'M':
        result = "NO..."
        break
    if x == n and y == m:
        break
    y += move

print(result)

2) 두번째 코드

n, m = map(int, input().split())
a, d = map(int, input().split())
sr, sc = map(int, input().split())
result = "NO..."
if sr == n:
    if n % 2 == 1 and a % 2 != d:
        result = "YES!"
    if n % 2 == 0 and a % 2 == d:
        result = "YES!"
print(result)

처음에 배열을 넣어서 푸는 방법으로 했으나 계속 틀려서 다른 방법을 찾아보니 그냥 수식으로 해결하는 방법이 있어서 저 나름대로 수식을 짜서 해봤으나 다시 틀렸습니다. 그래서 다른 방법을 찾아서 해결을 하였으나 정확히 어디가 틀렸는지 반례를 못 찾아서 스스로 좀 더 고민 못한 게 아쉽습니다.