Baekjoon Online Judge
문제
동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 원주 부근을 돌아다니다가 코레스코 콘도에서 아주 재밌는 놀이를 발견했다. 그 놀이의 이름은 바로 “꼬리를 무는 숫자 나열”. 이제부터 원숭이가 그토록 좋아하던 그 놀이를 파헤쳐보자.
놀이의 방법은 간단하다. 일단 4줄짜리 표에 왼쪽부터 수를 아래로 1부터 순서대로 적어나간다. 다음에 그 예가 잘 나타나있다.
이제 원숭이는 두 개의 자연수를 아무거나 생각한다. 그리고 숫자판에서 두 개의 자연수 사이의 직각거리를 구하면 된다. 여기서 직각거리는 동서방향거리와 남북방향거리의 합을 뜻한다.
예를 들어 저 숫자판에서 11과 33을 생각했다고 하자. 그렇다면 11과 33사이의 직각거리는 8이 된다.(동서방향거리 : 6, 남북방향거리 : 2) 다음 그림에 잘 나타나있다.
하지만 원숭이는 지금 혼란스럽다. 동물원에서 탈출한지 얼마 되지 않아서 계산을 할 수 없는 경지에 이르렀다. 여러분이 불쌍한 원숭이를 좀 도와줘야겠다. 원숭이가 생각한 두 자연수 사이의 직각거리를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 원숭이가 생각한 두 개의 자연수가 주어진다. 각 수는 10,000,000 이하이다.
출력
첫째 줄에 원숭이가 생각한 두 개의 자연수 사이의 직각거리를 출력한다.
예제 입력 | 예제 출력 |
11 33 | 8 |
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 원숭이가 생각한 두 개의 자연수
int num1 = in.nextInt();
int num2 = in.nextInt();
int garo = findGaro(num2) - findGaro(num1); // 동서방향거리
int sero = findSero(num2) - findSero(num1); // 남북방향거리
// 음수를 양수로 바꾸기
if (garo < 0) garo *= -1;
if (sero < 0) sero *= -1;
// 출력
System.out.println(garo + sero);
}
public static int findGaro(int n) {
int garo = n / 4;
// 4로 나누어 떨어지지 않는 수는 위에서 계산한 수에 1을 더한 칸에 위치한다.
if (n % 4 != 0)
garo++;
return garo;
}
public static int findSero(int n) {
int sero = n % 4;
// 4로 나누어 떨어지는 수는 위에서 4번째 칸에 위치한다.
if (sero == 0)
sero = 4;
return sero;
}
}
입력한 2개의 숫자가 가로/ 세로로 몇 번째 칸에 있는 지 각각 구한 뒤 그 값을 빼고 더해서 두 수 사이의 직각거리를 출력했다.
'백준 > JAVA' 카테고리의 다른 글
[Baekjoon/JAVA] 1026번 - 보물 (0) | 2022.08.06 |
---|---|
[Baekjoon/JAVA] 1652번 - 누울 자리를 찾아라 (0) | 2022.07.30 |
[Baekjoon/JAVA] 1592번 - 영식이와 친구들 (0) | 2022.07.30 |
[Baekjoon/JAVA] 1568번 - 새 (0) | 2022.07.19 |
[Baekjoon/JAVA] 1526번 - 가장 큰 금민수 (0) | 2022.06.05 |