꼬리를 무는 숫자 나열
동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 원주 부근을 돌아다니다가 코레스코 콘도에서 아주 재밌는 놀이를 발견했다. 그 놀이의 이름은 바로 “꼬리를 무는 숫자 나열”. 이제부터 원숭이가 그토록 좋아하던 그 놀이를 파헤쳐보자.
놀이의 방법은 간단하다. 일단 4줄짜리 표에 왼쪽부터 수를 아래로 1부터 순서대로 적어나간다. 다음에 그 예가 잘 나타나있다.
이제 원숭이는 두 개의 자연수를 아무거나 생각한다. 그리고 숫자판에서 두 개의 자연수 사이의 직각거리를 구하면 된다. 여기서 직각거리는 동서방향거리와 남북방향거리의 합을 뜻한다.
예를 들어 저 숫자판에서 11과 33을 생각했다고 하자. 그렇다면 11과 33사이의 직각거리는 8이 된다.(동서방향거리 : 6, 남북방향거리 : 2) 다음 그림에 잘 나타나있다.
하지만 원숭이는 지금 혼란스럽다. 동물원에서 탈출한지 얼마 되지 않아서 계산을 할 수 없는 경지에 이르렀다. 여러분이 불쌍한 원숭이를 좀 도와줘야겠다. 원숭이가 생각한 두 자연수 사이의 직각거리를 구하는 프로그램을 작성하시오.
예제 입출력
입력 | 출력 |
11 33 | 8 |
코드
1. 두 수 입력받기
Scanner를 사용하여 입력을 받는다.
그리고 좌표 계산을 위해 원점을 0이라 생각하여 1을 빼준다.
1. 가로 거리 구하기
입력값을 4로 나누었을 경우 가로 위치를 구할 수 있다.
(11 - 1) / 4 = 2
(33 - 1) / 4 = 8
그리고 두 값을 뺀 절대값이 가로 거리가 된다.
| 2 - 8 | = 6
2. 세로 거리 구하기
입력값을 4로 나누었을 때의 나머지로 세로 위치를 구할 수 있다.
(11 - 1) % 4 = 2
(33 - 1) % 4 = 0
그리고 두 값을 뺀 절대값이 세로 거리가 된다.
| 2 - 0 | = 2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt() - 1;
int b = scanner.nextInt() - 1;
int answer = 0;
answer += Math.abs(a / 4 - b / 4);
answer += Math.abs(a % 4 - b % 4);
System.out.println(answer);
}
}
'코딩 테스트 > [JAVA] 백준' 카테고리의 다른 글
[JAVA] 백준 2547번 사탕 선생 고창영 | BOJ 자바 (0) | 2022.03.18 |
---|---|
[JAVA] 별 찍기 | 백준 BOJ 2438 2439 2440 2441 2442 2443 2444 2445 2446 2522 2523 자바 (0) | 2022.03.16 |
[JAVA] 백준 1373번 2진수 8진수 (0) | 2022.03.15 |
[JAVA] 백준 8674번 Tabliczka (0) | 2022.03.10 |
[JAVA] 백준 5893번 17배 (0) | 2022.03.10 |
댓글