알고리즘 연습 문제: 나의 문제 풀이 방식
문제) 수를 입력 받아 2의 거듭제곱인지 여부를 리턴?
인자: num(number 타입의 정수 num>=1)
출력: boolean 타입을 리턴할 것
주의사항: 반복문(while) 사용, Number.isInteger, Math.log2, Math.log 사용 금지
2의 거듭제곱들의 성질을 파악해 보자
1(2^0), 2, 4, 8 ,16, 32, 64 … 숫자들의 법칙?
→ 2로 계속 나누었을 때 결국 1이 된다
fuction isPowTwo(num){
let isTwo = false; //boolean 리턴을 위한 변수 지정
while(num >=1){ // 해당 조건이 참일 때까지의 반복(while문)
// num을 계속 2로 나누면 어느순간 1 또는3/4 ... 같은 수가 될 것이므로
if(num===1){ // 계속 나누어서 1이 되었다면?
isTwo=true;
}
num=num/2; // 2로 계속 나눈다
}
return isTwo; // isTwo를 리턴
}
'알고리즘 연습' 카테고리의 다른 글
버블(거품) 정렬 알고리즘 (0) | 2021.10.13 |
---|---|
알고리즘 연습 - 문자열 배열을 입력 받아 가장 길고, 짧은 문자열을 제거 (0) | 2021.09.17 |
알고리즘 연습 - 연속된 홀수 문자열 사이에 특정 문자 추가 (0) | 2021.09.16 |
알고리즘 연습 - 2차원 배열의 요소로 만든 객체를 리턴하는 함수 구현 (0) | 2021.09.15 |
알고리즘 연습 - 각 단어 첫글자만 대문자가 되게 하는 함수 (0) | 2021.09.15 |