알고리즘/BOJ

[BOJ] 1011. Fly me to the Alpha Centauri

재담 2022. 2. 17. 01:12

문제 원본 : https://www.acmicpc.net/problem/1011

 

1011번: Fly me to the Alpha Centauri

우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행

www.acmicpc.net

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        ArrayList<Long> preCalc = new ArrayList<>();
        for (long i = 0; ; ++i) {
            preCalc.add(i * i + i * 3);

            if (i * i + i * 3 > Integer.MAX_VALUE) {
                break;
            }
        }

        for (int i = 0; i < n; ++i) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();

            if (y - x < 3) {
                System.out.println(y - x);
                continue;
            }

            for (int j = 1; j < preCalc.size(); ++j) {
                if (preCalc.get(j - 1) + 2 < y - x && y - x <= preCalc.get(j) + 2) {
                    if ((preCalc.get(j - 1) + 2 + preCalc.get(j) + 2) / 2 < y - x) {
                        System.out.println(4 + 2 * (j - 1));
                    } else {
                        System.out.println(3 + 2 * (j - 1));
                    }
                    break;
                }
            }
        }
    }
}
  • 규칙은 간단한데 일반항을 찾다가 포기...
  • 1 2 3 3 4 4 5 5 5 6 6 6 7 7 7 7 8 8 8 8
  • 그렇다 보니 시간이 엄청 오래 걸리고 메모리 사용량이 엄청 높다.
  • 다른 사람들 풀이를 보니 제곱수마다 규칙이 있는 것을 깨달았다...
  • 수학 공부 좀 하자.

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 3053. 택시 기하학  (0) 2022.02.19
[BOJ] 1541. 잃어버린 괄호  (0) 2022.02.18
[BOJ] 1436. 영화감독 숌  (0) 2022.02.16
[BOJ] 17136. 색종이 붙이기  (0) 2022.02.15
[BOJ] 16137. 견우와 직녀  (0) 2022.02.10