Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 갤럭시노트20
- 알고리즘
- 전자계약시스템
- 모두싸인마케터
- 자바스크립트
- 전자계약서
- 마케팅
- 모두싸인마케팅
- 아주작은습관의힘
- 전자계약솔루션
- 아이폰12
- javascript
- 모두의사인
- 전자계약
- 전자계약서비스
- 코딩테스트
- 좋은습관
- 아이폰
- 블록체인
- 자릿수더하기
- map
- atomichabits
- 온라인계약
- 습관
- 옥소폴리틱스
- 모두싸인
- 아이폰13
- 독후감
- 독서리뷰
- 모두사인
Archives
- Today
- Total
찰리의 이야기
Javascript 정수 제곱근 판별 본문
반응형
Javascript 정수 제곱근 판별
문제 : 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예
n / return
121 | 144 |
3 | -1 |
주어진 코드 ↓
function solution(n) {
var answer = 0;
return answer;
}
일단 제곱근을 구하는 메서드를 이용해서
제곱근이 될 때와 아닐 때를 분기화하면 될 것 같았습니다.
찾아보니 숫자에 루트를 씌워주는 Math.sqrt()를 이용하면 될 것 같습니다.
그리고 % 1을 했을 때 나머지가 0이 나오는지,
소수점이 남는지를 판단하여
양의 정수의 제곱근 인지 아닌지를 판단할 수 있을 것 같습니다.
function solution(n) {
if(Math.sqrt(n) % 1 !== 0){
return -1;
}else{
return (Math.sqrt(n) + 1)*(Math.sqrt(n) + 1);
}
}
여기까지가 제 풀이 방법이고
다른 풀이법도 살펴보았습니다.
function nextSqaure(n){
var result = 0;
var x = 0;
while (x*x < n){
x++;
}
if (x*x == n){
x++;
result = x*x;
}else{
result = 'no';
}
return result;
}
별도의 내장 메서드를 활용하지 않았습니다.
정수를 증가시켜서 특정 정수와 주어진 n이 같아질 때,
제곱근으로 판단하는 방식입니다.
이런 접근법도 있다는 관점에서 살펴보면 좋을 것 같습니다.
n값이 커질수록 연산 속도가 느려질 것 같다는 생각이네요.
Javascript 정수 제곱근 판별
반응형
'찰리: 코딩 연습' 카테고리의 다른 글
Javacsript 자연수 뒤집어 배열로 만들기 (0) | 2021.09.14 |
---|---|
Javascript 정수 내림차순으로 배치하기 (0) | 2021.09.13 |
Javascript 제일 작은 수 제거하기 (0) | 2021.09.12 |
Javascript 최대공약수와 최소공배수 (0) | 2021.09.10 |
Javascript 콜라츠 추측 (0) | 2021.09.09 |
Comments