Dev.baelanche

[백준 1484] 다이어트 본문

Data Structure & Algorithm/PS - JAVA

[백준 1484] 다이어트

baelanche 2019. 7. 5. 20:27
반응형

 

투포인터를 통해

hi * hi - low * low 와 G를 비교한다.

 

투포인터 탐색을 언제 멈출건지가 가장 중요한데, low + 1 = hi 이고 두수의 제곱의 차가 G보다 작으면

더이상 연산할 필요가 없다.

 

또한 현재 몸무게와 이전 몸무게는 모두 자연수로 0이 될 수 없다는 점을 주의하자.

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int g = sc.nextInt();
        
        int lo = 1;
        int hi = 1;
        boolean f = false;
        while(true) {
            long minus = (long)(Math.pow(hi, 2)) - (long)(Math.pow(lo, 2));
            if(hi - lo == 1 && minus > g) break;
            if(minus >= g) lo++;
            else hi++;
            if(minus == g) {
                System.out.println(hi);
                f = true;
            }
        }
        if(!f) System.out.println(-1);
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 1072] 게임  (0) 2019.07.16
[백준 2869] 달팽이는 올라가고 싶다  (0) 2019.07.16
[백준 1806] 부분합  (0) 2019.07.05
[백준 1644] 소수의 연속합  (0) 2019.07.05
[백준 10974] 모든 순열  (0) 2019.07.05
Comments