알고리즘/BaekJoon 알고리즘
[백준알고리즘] Q1977 완전재곱수
lkh's
2018. 11. 13. 02:31
1. Java 구현
package Q1977; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int m = (int)Math.ceil(Math.sqrt(Double.parseDouble(br.readLine()))); int n = (int)Math.sqrt(Double.parseDouble(br.readLine())); int sum = 0; for (int i = m; i <= n; i++) { sum += (i * i); } if(sum > 0) { bw.write(sum + "\n"); bw.write((m * m) + "\n"); } else { bw.write("-1" + "\n"); } bw.close(); } }
2. 코드설명
처음 문제를 풀었을 때는 입력받은 m 부터 n 까지 반복문을 동작하는 방식으로 풀었다. m과 n은 1 ~ 10000 까지 입력이 가능하기 때문에 최악에는 10000번
반복문을 돌아야 한다. 물론 충분히 처리가 가능하겠지만, 반복문이 동작하는 횟수를 조금 줄일 수 있는 방법을 생각했다.
m은 입력받은 수보다 큰 완전 재곱수로 변환하고, n은 입력받은 수보다 작은 완전재곱수로 변환해서, m과 n의 크기를 축소해서 반복횟수를 줄였다.