문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
왓슨은 셜록의 수학 능력에 도전하는 것을 좋아한다. 그는 시작 값과 끝 값을 주고, 이 값들을 포함한 정수형 범위이다. 셜록은 주어진 범위 내에서 제곱수의 갯수를 찾아야 한다.
a = 24
b = 49
범위 내에 25, 36, 49 3개의 제곱수가 있다. 그래서 3을 반환한다.
squares 함수를 완성해라. a와 b를 포함한 범위 내에 있는 제곱수의 개수를 반환해야 한다.
squares 함수는 아래와 같은 매개변수를 가지고 있다.
Math.sqrt()를 사용해서 제곱근부터 구했다. 1부터 반복문을 시작하려고 했지만 최소 범위가 주어지기 때문에 비효율적이라고 생각했다.
먼저 start, end, 제곱수의 갯수를 담을 count 변수를 선언한다. start와 end는 Math.sqrt를 사용해서 시작 값과 끝 값을 할당한다.
int start = (int) Math.sqrt((double) a);
int end = (int) Math.sqrt((double) b);
int count = 0;
start와 end를 이용해서 반복문을 사용한다. 반복문 안에 조건문을 통해 제곱수의 갯수를 증가시킨다.
for(int i = start; i <= end; i++){
if(i * i >= a && i * i <= b){ // a값과 b값이 포함되어야 한다.
count++;
}
}
count를 반환한다.
return count;
public static int squares(int a, int b) {
int start = (int) Math.sqrt((double) a);
int end = (int) Math.sqrt((double) b);
int count = 0;
for(int i = start; i <= end; i++){
if(i * i >= a && i * i <= b){
count++;
}
}
return count;
}