프로그래밍/알고리즘

Fly me to the Alpha Centauri(백준: 1011 / 자바)

sungjine 2022. 2. 15. 11:14
반응형

데이터를 입력받은 후 데이터에서 가야하는 거리를 구한다.

 

가야하는 거리를 이동하는 최소값은 규칙이 있다.

 

이 규칙은 1부터 하나씩 최소값을 찾아보면 규칙이 보이고 규칙은 다음과 같다.

 

1 2 3 3 4 4 5 5 5 6 6 6 7 7 7 7 8 8 8 8 9 ... 와 같은 증가 형식을 띄게 된다.

 

이를 구현한 코드는 아래와 같다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int n = Integer.parseInt(br.readLine());
        
		for(int i = 0; i < n; i++) {
			String[] str = br.readLine().split(" ");
			int distance = Integer.parseInt(str[1]) - Integer.parseInt(str[0]);
			int repeat = 1;
			long sum = 0;
			int result = 0;
            
			for(int j = 1; j <= distance; j++) {
				result = j;
				sum += repeat;
                
				if(sum >= distance) {
					break;
				}
                
				if(j % 2 == 0) {
					repeat++;
				}
			}
            
			sb.append(result);
			sb.append("\n");
		}
        
		System.out.print(sb.toString());
	}
}
반응형