4. Baek_Joon Algorithm

이재현·2023년 12월 4일
0

Baek_Joon Algorithm

목록 보기
4/6

Bronze III

문제 링크
성능 요약
메모리: 17896 KB, 시간: 224 ms

분류
사칙연산, 수학

제출 일자
2023년 12월 4일 15:15:53

문제 설명
동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 원주 부근을 돌아다니다가 코레스코 콘도에서 아주 재밌는 놀이를 발견했다. 그 놀이의 이름은 바로 “꼬리를 무는 숫자 나열”. 이제부터 원숭이가 그토록 좋아하던 그 놀이를 파헤쳐보자.

놀이의 방법은 간단하다. 일단 4줄짜리 표에 왼쪽부터 수를 아래로 1부터 순서대로 적어나간다. 다음에 그 예가 잘 나타나있다.

이제 원숭이는 두 개의 자연수를 아무거나 생각한다. 그리고 숫자판에서 두 개의 자연수 사이의 직각거리를 구하면 된다. 여기서 직각거리는 동서방향거리와 남북방향거리의 합을 뜻한다.

예를 들어 저 숫자판에서 11과 33을 생각했다고 하자. 그렇다면 11과 33사이의 직각거리는 8이 된다.(동서방향거리 : 6, 남북방향거리 : 2) 다음 그림에 잘 나타나있다.

하지만 원숭이는 지금 혼란스럽다. 동물원에서 탈출한지 얼마 되지 않아서 계산을 할 수 없는 경지에 이르렀다. 여러분이 불쌍한 원숭이를 좀 도와줘야겠다. 원숭이가 생각한 두 자연수 사이의 직각거리를 구하는 프로그램을 작성하시오.

입력
첫째 줄에 원숭이가 생각한 두 개의 자연수가 주어진다. 각 수는 10,000,000 이하이다.

출력
첫째 줄에 원숭이가 생각한 두 개의 자연수 사이의 직각거리를 출력한다.


예제 입력.1

11 33


예제 출력.1

8


풀이

import java.util.Scanner;


public class BackJoon1463 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int firstNum = sc.nextInt();
		int secondNum = sc.nextInt();
		int f = firstNum%4;
		int s = secondNum%4;
		int cnt = 0;
		int cnt2 = 0;
		if(f <= 0) {
			f = 4;
		}
		if(s <= 0) {
			s = 4; 
		}
		int result = f - s;
		if (result < 0) {
			result = -(result);
		}
		for(int i = f; i <= firstNum; i+=4) {
			cnt++;
		}
		for(int i = s; i <= secondNum; i+=4) {
			cnt2++;
		}
		if(cnt > cnt2) {
			System.out.println((cnt-cnt2)+result);
		} else {
			System.out.println((cnt2-cnt)+result);
		}
	}
}
  • 알고리즘 문제 접근 순서
  1. 브론즈 문제 이므로, Scanner 채택.
  2. y축은 최소 값1 최대 값4
  3. y축은 나머지 연산자 사용.
  4. y축은 0 또는 음수가 될 수 없으므로, 조건문 사용.
  5. result는 y축
  6. 반복문 사용해서 x축을 구함.
  7. 출력

profile
뿌에엥

0개의 댓글