알고리즘 단련장/해커랭크

[해커랭크] Sherlock and Squares

snapcoder 2025. 10. 11. 19:28
728x90
반응형
SMALL

[해커랭크] Sherlock and Squares

 

https://www.hackerrank.com/challenges/sherlock-and-squares/problem?isFullScreen=true

 

Sherlock and Squares | HackerRank

Find the count of square numbers between A and B

www.hackerrank.com

 

Watson likes to challenge Sherlock's math ability. He will provide a starting and ending value that describe a range of integers, inclusive of the endpoints. Sherlock must determine the number of square integers within that range.

Note: A square integer is an integer which is the square of an integer, e.g. .

Example

There are three square integers in the range:  and . Return .

Function Description

Complete the squares function in the editor below. It should return an integer representing the number of square integers in the inclusive range from  to .

squares has the following parameter(s):

  • int a: the lower range boundary
  • int b: the upper range boundary

Returns

  • int: the number of square integers in the range

Input Format

The first line contains , the number of test cases.
Each of the next  lines contains two space-separated integers,  and , the starting and ending integers in the ranges.

Constraints


Sample Input

2
3 9
17 24

Sample Output

2
0

Explanation

Test Case #00: In range ,  and  are the two square integers.
Test Case #01: In range , there are no square integers.

 

 

 

 

 

 

 

풀이

이분탐색일줄 알았으나, 단순 제곱근 계산 문제였다.

a와 b에 대한 제곱근을 구하고 소수점처리 해주면 된다.

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;

class Result {

    /*
     * Complete the 'squares' function below.
     *
     * The function is expected to return an INTEGER.
     * The function accepts following parameters:
     *  1. INTEGER a
     *  2. INTEGER b
     */
     
    public static boolean isSquareNum(double n) {
        int sqrtResult = (int) Math.sqrt(n);
        boolean isSquareNum = (sqrtResult*sqrtResult == n) ? true : false;
        return isSquareNum;
    }

    public static int squares(int a, int b) {
    // Write your code here
       
        // 1 ~ 1,000,000,000
        // 1 ~ 31,622
       
        // System.out.println(Math.pow(7, 2)); // 49
        // System.out.println(Math.pow(8, 2)); // 64
        // System.out.println(Math.sqrt(50));  // 7.xxx
       
        // a=100, b=1000
        double sqrtA = Math.sqrt(a);    // 10.0
        double sqrtB = Math.sqrt(b);    // 31.xxx
       
        int sqrtAint = isSquareNum(a) ? (int) sqrtA : (int) sqrtA + 1;     // 10
        int sqrtBint = (int) sqrtB;     // 31
       
        int count = sqrtBint - sqrtAint + 1;
       
        // System.out.println(sqrtA + " " + sqrtB + " " + sqrtAint + " " + sqrtBint);
       
        return count;
    }

}

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        int q = Integer.parseInt(bufferedReader.readLine().trim());

        IntStream.range(0, q).forEach(qItr -> {
            try {
                String[] firstMultipleInput = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");

                int a = Integer.parseInt(firstMultipleInput[0]);

                int b = Integer.parseInt(firstMultipleInput[1]);

                int result = Result.squares(a, b);

                bufferedWriter.write(String.valueOf(result));
                bufferedWriter.newLine();
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }
        });

        bufferedReader.close();
        bufferedWriter.close();
    }
}

 

 

728x90
반응형
LIST

'알고리즘 단련장 > 해커랭크' 카테고리의 다른 글

[해커랭크] Cut the sticks  (0) 2025.10.11
[해커랭크] Library Fine  (0) 2025.10.11
[해커랭크] Append and Delete  (0) 2025.10.11
[해커랭크] Extra Long Factorials  (0) 2025.08.14
[해커랭크] Utopian Tree  (0) 2025.08.14