[코딩테스트] Level1. 정수 제곱근 판별
정수 제곱근 판별
✍ 문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
✍ 제한사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
✍ 입출력 예
N | answer |
---|---|
121 | 144 |
3 | -1 |
✍ 입출력 예 설명
-
입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. -
입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.
❓ 제곱근을 구한 후 삼항연산자로 n이양의정수x의제곱이라면(조건) ? (참)x+1의 제곱을 리턴 : (거짓)-1을 리턴
// ( solution.js )
function solution(n){
// n이 121일 경우
var answer = 0;
// 제곱근구하기
var x = Math.sqrt(n);
console.log(x); // 11
answer = Number.isInteger(x) ? Math.pow(x+1, 2) : -1;
console.log(answer);
return answer;
}
❓ ... : 전개연산자
=> arr앞에 ...을 사용해야 Math.min()사용가능
...(전개연산자, Spread 문법)
변수 = [...변수명]
- 전개 연산자는 배열의 요소나 객체를 나열해주는 연산자이다.
- 배열이나 객체의 복사본(원본에 영향을 미치지 않는다)을 만들 수 있으면서 여러개의 배열이나 객체를 손쉽게 합칠 수도 있고, 함수의 매개변수나 인자 값으로도 사용이 가능하다.
1. 배열에서의 전개연산자 사용
① 배열복사
- arr배열의 값을 전개하여 copyArr변수에 저장되어서 출력했을 때의 값은 같지만 둘의 주소값은 다르므로
다른 변수
이다.
let arr = [1,2,3,4,5];
let copyArr = [...arr];
console.log(arr, copayArr); // [1,2,3,4,5] [1,2,3,4,5]
console.log(arr === copyArr); // false
② 배열 병합
- 전개연산자를 사용하여 두 배열을 쉽게 병합할 수 있다.
let leftArr = [1,2,3,4,5];
let rightArr = [6,7,8,9,10];
let arr = [...leftArr, ...rightArr];
console.log(arr); // [1,2,3,4,5,6,7,8,9,10];
leftArr.push(...rightArr);
console.log(leftArr); // [1,2,3,4,5,6,7,8,9,10];
③ 함수의 인자값으로 전개연산자 사용
- sum함수에 3개의 매개변수(a, b, c)가 있는데
전개연산자 미사용시 : arr배열의 인덱스를 이용해 각각의 매개변수에 집어넣는다.
전개연산자 사용시 : arr배열의 요소를 나열해 각각의 매개변수에 자동으로 들어간다.
let sum = function(a, b, c){
return a+b+c;
}
let arr = [1,10,100];
// 전개 연산자 미사용시
console.log(sum(arr[0], arr[1], arr[2])); // 111
// 전개 연산자 사용시
console.log(sum(...arr)); // 111
④ 함수의 매개변수로 전개연산자 사용
let sum = function(...arr){
let result = 0;
for ( i of [...arr]){
result += i;
}
return result;
console.log(sum(1, 100, 1000)); // 1101
console.log(sum(1,2,3,4,5,6,7,8,9,10)); // 55
}
2. 객체에서 전개연산자 이용
① 객체복사(1)
- Person객체의 내용을 전개하여 otherPerson인 변수에 저장하였다. 출력했을때 값은 같지만 둘의 주소값은 다르므로
다른객체
로 취급한다.
let Person = {
name : "KimHyeonJu",
from : "Korea",
language : "JavaScript",
};
let otherPerson = {...Person};
console.log(Person); // { name: "KimHyeonJu", from: "Korea", language: "Javascript" }
console.log(otherPerson); // { name: "KimHyeonJu", from: "Korea", language: "Javascript" }
console.log(Person === otherPerson); // false
② 객체복사(2)
let Person = {
name : "KimHyeonJu",
from : "Korea",
language : "JavaScript",
};
let otherPerson = {
...Person,
age : 28
};
console.log(otherPerson); // { name: "KimHyeonJu", from: "Korea", language: "Javascript", age: 28 }
③ 객체병합
let Person = {
name : "KimHyeonJu",
age : 28
}
let language = {
language : "JavaScript"
}
let sum = {...Person, ...language};
console.log(sum); // { name: "KimHyeonJu", age: 28, language: "JavaScript" }
❓ Math.min() : 가장 작은 수(최소값)
을 구한다.
Math.max() , Math.min()
Math.max([숫자집합]) : 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환한다.
Math.min([숫자집합]) : 입력값으로 받은 0개 이상의 숫자 중 가장 작은 숫자를 반환한다.var maxValue = Math.max(-5,0,5,10); console.log(maxValue); // 10
var minValue = Math.min(-5,0,5,10);
console.log(minValue); // -5
❓ arr.indexOf() : 가장 작은 수가 arr의 몇번째 index에 있는지 구한다.
❓ arr.splice(index, 1) : arr의 가장 작은 수가 있는 index로 부터 한 개의 요소만 삭제하는 것으로 가장 작은 수를 삭제한다.
Author And Source
이 문제에 관하여([코딩테스트] Level1. 정수 제곱근 판별), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyesom/코딩테스트-Level1.-정수-제곱근-판별저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)