문제
동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 원주 부근을 돌아다니다가 코레스코 콘도에서 아주 재밌는 놀이를 발견했다. 그 놀이의 이름은 바로 “꼬리를 무는 숫자 나열”. 이제부터 원숭이가 그토록 좋아하던 그 놀이를 파헤쳐보자.
놀이의 방법은 간단하다. 일단 4줄짜리 표에 왼쪽부터 수를 아래로 1부터 순서대로 적어나간다. 다음에 그 예가 잘 나타나있다.
이제 원숭이는 두 개의 자연수를 아무거나 생각한다. 그리고 숫자판에서 두 개의 자연수 사이의 직각거리를 구하면 된다. 여기서 직각거리는 동서방향거리와 남북방향거리의 합을 뜻한다.
예를 들어 저 숫자판에서 11과 33을 생각했다고 하자. 그렇다면 11과 33사이의 직각거리는 8이 된다.(동서방향거리 : 6, 남북방향거리 : 2) 다음 그림에 잘 나타나있다.
하지만 원숭이는 지금 혼란스럽다. 동물원에서 탈출한지 얼마 되지 않아서 계산을 할 수 없는 경지에 이르렀다. 여러분이 불쌍한 원숭이를 좀 도와줘야겠다. 원숭이가 생각한 두 자연수 사이의 직각거리를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 원숭이가 생각한 두 개의 자연수가 주어진다. 각 수는 10,000,000 이하이다.
출력
첫째 줄에 원숭이가 생각한 두 개의 자연수가 주어진다. 각 수는 10,000,000 이하이다.
풀이
1. 주어진 표는 4줄짜리 표이며, X와 Y좌표로 나타낼 수 있는 이차원 배열이다.
2. Row(행)을 기준으로 4*n+1, 4*n+2, 4*n+3, 4*n+4 (n>=0) 의 형태로 나타낼 수 있게된다.
3. 다르게 표현하면 주어지는 값을 하나 뺀다면 4*n, 4*n+1, 4*n+2, 4*n+3 (n>=0)으로도 표현 할 수 있다.
4. Column(열)을 기준으로는 4*n+1 (n>=0)의 식을 가지게 된다.
5. (3)과 마찬가치로 주어지는 값을 하나 뺸다면 4*n (n>=0)으로 표현가능하게 된다.
6. 이를 이용하여 행의 번호는 %연산을 이용하면 구할 수 있다.
7. 열의 번호는 /연산을 이용하여 구한다.
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x=sc.nextInt()-1, y=sc.nextInt()-1;
System.out.println(Math.abs(x/4-y/4) + Math.abs(x%4-y%4));
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
Baekjoon 2530 인공지능 시계 JAVA (0) | 2022.08.23 |
---|---|
Baekjoon 25311 UCPC에서 가장 쉬운 문제 번호는? TEXT (0) | 2022.08.23 |
Baekjoon 1247 부호 JAVA (0) | 2022.08.23 |
Baekjoon 1284 집 주소 JAVA (0) | 2022.08.23 |
Baekjoon 11048 이동하기 JAVA (0) | 2022.08.06 |
댓글