[백준/파이썬] 1598번 : 꼬리를무는 숫자 나열

Cornflower blue·2022년 2월 1일
0

백준 풀이

목록 보기
5/15

문제

문제 풀이 과정

나의 오답 코드

a, b = map(int, input().split())
w = 0
h = 0

if (b % 4) == 0 and (a % 4) != 0:
    w = abs((b // 4) - (a // 4) - 1)
elif (b % 4) != 0 and (a % 4) == 0:
    w = abs((b // 4) - (a // 4) - 1)
else:
    w = abs((b // 4) - (a // 4))

if a % 4 == 1:
    if b % 4 == 1:
        h = 0
    elif b % 4 == 2:
        h = 1
    elif b % 4 == 3:
        h = 2
    else:
        h = 3
elif a % 4 == 2:
    if b % 4 == 1:
        h = 1
    elif b % 4 == 2:
        h = 0
    elif b % 4 == 3:
        h = 1
    else:
        h = 2
elif a % 4 == 3:
    if b % 4 == 1:
        h = 2
    elif b % 4 == 2:
        h = 1
    elif b % 4 == 3:
        h = 0
    else:
        h = 1
else:
    if b % 4 == 1:
        h = 3
    elif b % 4 == 2:
        h = 2
    elif b % 4 == 3:
        h = 1
    else:
        h = 0

print(w)

적절한 규칙이 생각나지 않아 노가다로라도 풀려고 했다. 근데 계속 놓치는 부분들이 생기고 코드가 더 복잡해져서 다른 분들의 답안을 보고 풀기로 했다.

다른 분들의 풀이 (성공)

좌표로 생각하고 접근하시는 분들이 많다.
원점을 0으로 두기에 입력받은 값에서 각각 1을 빼준다.
가로 좌표는 4로 나눈 몫, 세로 좌표는 4로 나눈 나머지로 본다.
이때 원점은 왼쪽 하단 4를 뜻한다.

a, b = map(int, input().split())
a = a - 1  # 좌표 개념으로 접근하기 위해서 -1을 해준다.
b = b - 1  # 좌표 개념으로 접근하기 위해서 -1을 해준다.
w = abs(a//4 - b//4)
h = abs(a % 4 - b % 4)
print(w + h)
profile
무언가를 만들어낸다는 것은 무척이나 즐거운 일입니다.

0개의 댓글