본문 바로가기
내일배움 과제/기타 과제

알고리즘 19번 - 추가공부

by GREEN나무 2024. 11. 22.
728x90

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

JS

문제

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

제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예


계획

제곱근 구하는 함수 사용

n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴

제곱근이 없으면 -1리턴S

문제

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.

n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

 

제한 사항

n은 1이상, 50000000000000 이하인 양의 정수입니다.

입출력 예

 

계획

제곱근 구하는 함수 사용

 

n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴

 

제곱근이 없으면 -1리턴


참고, 풀이

console.log(Math.sqrt(9)); // 3
console.log(Math.sqrt(6)); // 2.449489742783178
console.log(Math.sqrt(-9)); // NaN

1. 제곱근 존재 여부를 Math.sqrt(n)의 값이 정수일 경우로 제한하기

2. 있으면 (Math.sqrt(n)+1)**

 

제곱하는 방법 

Math.pow(result, 2);
(Math.sqrt(n) + 1) ** 2

 

정수 판별하기

console.log(Number.isInteger(10)); // true
console.log(10 % 1 === 0); // true
console.log("-O-----------------------X-"); 
console.log(Number.isInteger(9.5)); // false
console.log(9.5 % 1 === 0); // false
console.log("-X---------------------(-)-"); 
console.log(Number.isInteger(-9)); // true
console.log(-9 % 1 === 0); // true

Number.isInteger(10);
// number % 1 === 0;

 

function solution(n) {
  return Math.sqrt(n) % 1 === 0 ? Math.pow(Math.sqrt(n) + 1, 2) : -1;
}

console.log(solution(10)); // -1
console.log(solution(9)); // 16

 

화살표함수 만들기

const solution = n =>
  Math.sqrt(n) % 1 === 0 ? Math.pow(Math.sqrt(n) + 1, 2) : -1;

 


const solution = n =>
  Math.sqrt(n) % 1 === 0 ? Math.pow(Math.sqrt(n) + 1, 2) : -1;

 

코드 간략화하기

const solution = n => {
  const sqrt = Math.sqrt(n);
  return sqrt % 1 === 0 ? Math.pow(sqrt + 1, 2) : -1;
};

성능: Math.sqrt를 한 번만 호출하는 것이 더 좋음


출처 

제곱근 Math.sqrt(n); : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt

제곱하기 Math.pow( n,2): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow

정수판별 : https://hianna.tistory.com/463


 

◆ C

더보기

◆ C

계획


참고, 풀이


//



코드 간략화하기

 


출처 

 

 

 

 

 

 

◆ C#

더보기

◆ C#

계획


참고, 풀이


//



코드 간략화하기

 


출처 

 

 

 

◆ C++

더보기

◆ C++

계획


참고, 풀이


//



코드 간략화하기

 


출처 

 

 

 

 

 

 

 

'내일배움 과제 > 기타 과제' 카테고리의 다른 글

알고리즘 21번 - 추가공부  (0) 2024.11.26
알고리즘 20-추가공부  (0) 2024.11.25
알고리즘 18번 - 추가공부  (0) 2024.11.21
스텐다드 24.11.19 과제  (0) 2024.11.20
알고리즘 17번 - 추가공부  (0) 2024.11.20