티스토리 뷰
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의 크기를 축소해서 반복횟수를 줄였다.
'알고리즘 > BaekJoon 알고리즘' 카테고리의 다른 글
[백준 알고리즘] Q2193 이친수 (0) | 2018.11.24 |
---|---|
[백준 알고리즘] Q9521 LCS - 동적계획법 (0) | 2018.11.22 |
[백준 알고리즘] Q10219 Meats on the grill (0) | 2018.11.10 |
[백준 알고리즘] Q1024 수열의 합 (0) | 2018.11.09 |
[백준 알고리즘] Q1094 막대기 - Integer.bitCount(num) (0) | 2018.11.09 |