개발 일기

프로그래머스 레벨 1 정수 제곱근 판별 (JAVA) 본문

알고리즘/programmers

프로그래머스 레벨 1 정수 제곱근 판별 (JAVA)

dev-jo 2021. 6. 27. 23:26

블로그를 시작하려 한다..

 

알고리즘이든 자바공부든 스프링 공부든

 

뭔가를 한 내역이 있으면 블로그에 남기려고 한다.

 

2주정도 꾸준히 풀고있는 알고리즘 문제를 시간날때마다 올려 봐야겠다.

 

https://programmers.co.kr/learn/courses/30/lessons/12934

 

코딩테스트 연습 - 정수 제곱근 판별

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함

programmers.co.kr

 

요즘 자바의 스트림과 람다식도 공부하고있어서 최근 공부한걸 응용해서 풀어보았다..!

 

public class Programmers12934 {

    public long solution(long n) {
        return LongStream.of(n).map(s ->
                {
                    int count = 1;
                    double num = (double) s / 2;
                    while (true) {
                        if(num - count < 0) {
                            if(num * 2 == count) {
                                return (long) (count + 1) * (count + 1);
                            } else {
                                return -1;
                            }
                        }
                        num = num - count;
                        count++;

                    }
                }
        ).max().orElse(-1);
    }

}