제곱근 판별
빨리 풀다 보니 조건을 보지 않고 그냥 제곱 수를 써서 판별하다가 시간 초과가 났는데
키 포인트는 제곱근으로 판별하는 부분(newN % 1 == 0) 인 것 같다. (double 타입인 제곱근을 1로 나눴을 때 나누어 떨어지면 원래 수가 제곱 수임)
틀린 풀이
long answer = 0;
int i = 1;
while (i * i != n || i * i > n)
{
i++;
}
answer = i * i > n ? -1 : (i + 1) * (i + 1);
맞은 풀이
using System;
public class Solution {
public long solution(long n) {
long answer = 0;
double newN = Math.Sqrt(n);
answer = newN % 1 == 0 ? answer = (long)Math.Pow(newN + 1, 2) : -1;
return answer;
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/12934
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'알고리즘' 카테고리의 다른 글
프로그래머스 - 시저 암호 (0) | 2023.08.30 |
---|---|
프로그래머스 - 최대공약수와 최소공배수 (0) | 2023.08.28 |
프로그래머스 - 정수 내림차순으로 배치하기 (0) | 2023.08.25 |
프로그래머스 - 최빈값 구하기 (0) | 2023.08.17 |
프로그래머스 - 몫 구하기 (0) | 2023.08.17 |