https://www.acmicpc.net/problem/1598
문제
동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 원주 부근을 돌아다니다가 코레스코 콘도에서 아주 재밌는 놀이를 발견했다. 그 놀이의 이름은 바로 “꼬리를 무는 숫자 나열”. 이제부터 원숭이가 그토록 좋아하던 그 놀이를 파헤쳐보자.
놀이의 방법은 간단하다. 일단 4줄짜리 표에 왼쪽부터 수를 아래로 1부터 순서대로 적어나간다. 다음에 그 예가 잘 나타나있다.

이제 원숭이는 두 개의 자연수를 아무거나 생각한다. 그리고 숫자판에서 두 개의 자연수 사이의 직각거리를 구하면 된다. 여기서 직각거리는 동서방향거리와 남북방향거리의 합을 뜻한다.
예를 들어 저 숫자판에서 11과 33을 생각했다고 하자. 그렇다면 11과 33사이의 직각거리는 8이 된다.(동서방향거리 : 6, 남북방향거리 : 2) 다음 그림에 잘 나타나있다.

하지만 원숭이는 지금 혼란스럽다. 동물원에서 탈출한지 얼마 되지 않아서 계산을 할 수 없는 경지에 이르렀다. 여러분이 불쌍한 원숭이를 좀 도와줘야겠다. 원숭이가 생각한 두 자연수 사이의 직각거리를 구하는 프로그램을 작성하시오.
코드
a, b = map(int, input().split())
ax, ay = (a - 1) // 4, (a - 1) % 4
bx, by = (b - 1) // 4, (b - 1) % 4
d = abs(ax - bx) + abs(ay - by)
print(d)
풀이
처음엔 진짜 아무 생각없이 주어진 숫자대로 대입해서 코드 짰다가 단순한 문제인 것 같은데 너무 길어져서 다시 문제를 읽어보았고 주어진 숫자에 1을 빼주면 수월하게 구할 수 있는 문제였다.
가로로는 4씩 증가하고 세로로는 4개의 숫자밖에 없다. 즉, 세로의 경우 4로 나머지를 구하면 1, 2, 3, 0이라는 소리다. 하지만 아래에 있는 숫자가 더 커야하기 때문에 1, 2, 3, 0 순서라면 계산하기 힘들어진다. 그렇기에 주어진 숫자에 1을 빼준다. 그러면 0, 1, 2, 3의 순서가 된다. 훨씬 수월해진다.
1. 직각 거리를 구할 두 수를 받는다.
2. 주어진 수의 좌표를 구한다.
3. 주어진 수의 x값과 y값을 빼준다.
4. 나온 값을 출력한다.
'백준 > 브론즈3' 카테고리의 다른 글
| [Python/C] 백준 1284 - 집 주소 (0) | 2025.04.17 |
|---|---|
| [Python/C] 백준 2455번 - 지능형 기차 (0) | 2025.04.16 |
| [Python] 백준 4740번 - 거울, 오 ! 거울 (0) | 2025.04.15 |
| [Python] 백준 3512번 - Flat (0) | 2025.04.15 |
| [Python] 백준 3507번 - Automated Telephone Exchange (0) | 2025.04.15 |