반응형

안녕하세요 Jin's 입니다.

 

백준 알고리즘의 수학1 중 Fly me to the Alpha Centauri ( 문제 번호 : 1011 )의 소스입니다.

 

 

Java와 Python 두가지 버전 소스입니다.

 

위치 공간이동경로 거리 이동횟수 제곱근의 루트 제곱근의 루트 절대값
0~1 1 1 1 1.0 1
0~2 1 1 2 2 1.4 1
0~3 1 2 1 3 3 1.7 1
0~4 1 2 1 1 4 3 2.0 2
0~5 1 2 2 1 5 4 2.2 2
0~6 1 2 1 1 1 6 4 2.4 2
0~7 1 2 2 1 1 7 5 2.6 2
0~8 1 2 2 2 1 8 5 2.8 2
0~9 1 2 3 2 1 9 5 3.0 3

[ 거리의 제곱근 루트 패턴 ]

- 정수일 경우

   ex ) 0~1, 0~4, 0~9

   공식 -> 2*제곱근의 루트 -1

- 반올림할 경우

      - 버림 

             ex ) 0~2, 0~5, 0~6

             공식 -> 2*제곱근의 루트 절대값 -1

      - 올림

             ex ) 0~3, 0~7, 0~8

             공식 -> 2*제곱근의 루트 절대값

 

1) JAVA

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int t = Integer.parseInt(scan.nextLine());

		for(int i=0; i<t; i++){
			long x = scan.nextLong();
			long y = scan.nextLong();
			long distance = y-x;
			long max = (int)Math.sqrt(distance);

			//0~1, 0~4, 0~9
			if(max == Math.sqrt(distance)){
				System.out.println(2*max-1);
			//0~2,0~5, 0~6	
			}else if( Math.sqrt(distance) - max <= 0.5 ){
				System.out.println(2*max);
			//0~3, 0~7, 0~8
			}else{
				System.out.println(2*max+1);
			}
		}
		scan.close();
	}
}

 

2) PYTHON

import math

t = int(input())
for _ in range(t):
    x, y = map(int, input().split())
    distance = y - x
    max = int(math.sqrt(distance))
    if max == math.sqrt(distance):
        print(2*max-1)
    elif math.sqrt(distance) - max <= 0.5:
        print(2*max)
    else:
        print(2*max+1)

 

여러분도 한번 풀어보세요!

 

반응형

+ Recent posts