[백준/9024] 다이어트 - JAVA

이지환·2025년 6월 5일

알고리즘(백준) 💻

목록 보기
71/80
post-thumbnail

📌 문제

알고리즘 분류 : 투 포인터
난이도 : 골드5
출처 : 백준 - 다이어트

🦧 문제 풀이 접근

투포인터 방식으로 문제를 해결한다.
두개의 포인터(p1,p2)를 각각 1,2에서 시작한다.
p2^2 - p1^1이 G와 같은 경우를 저장한다.
p2와 p1의 차이가 1이고 p2^2 - p1^1이 G보다 클 경우 더 이상 불가능하기 때문에 반복문을 종료한다.

💻 code

import java.util.*;
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int G = Integer.parseInt(br.readLine());
        int p1=1,p2=2;
        while(p2>p1) {
            if(p2-p1==1 && Math.pow(p2,2)-Math.pow(p1,2)>G) {
                break;
            }
            if(Math.pow(p2,2)-Math.pow(p1,2)==G) {
                sb.append(p2).append("\n");
                p1++;
                p2++;
            }
            else if(Math.pow(p2,2)-Math.pow(p1,2)>G)
                p1++;
            else
                p2++;
        }
        System.out.println(sb.length() == 0 ? -1 : sb);
    }
}

🥇 결과

🎓 느낀점

문제를 해석하기 어려웠다. 반복문 종료 조건을 잘 찾는것이 포인트다.

profile
takeitEasy

0개의 댓글