問題アノテーション変数、条件文、文字列、繰り返し文

28453 ワード

変数の定理
条件文
文字列
複文
03_isOdd
入力した「¥2」の数が奇数であるかどうかを返さなければなりません.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
パラメータ1:num
数値タイプの整数
------------------------------------<出力>----------------------------------------------
booleanタイプを返す必要があります.
-------------------------<注意事項>---------------------------------------
繰り返し文(while)を使用する必要があります.
for文の使用を禁止します.
除算(/)およびその他(%)演算子の使用を禁止します.
0は偶数とみなされます.
----------------------------------------------------------------
let output = isOdd(17);
console.log(output); // --> true

output = isOdd(-8);
console.log(output); // --> false
-------------------------------------------------------------------------
function isOdd(num) {
  // 숫자-2 계속 반복했을 때 (단, 조건은 양수일대까지) 1 -> 홀 / 0-> 짝
  // (num - 2) === 1 -> return true / === 0 -> return false;  
 
 if (num < 0) {
   num = -num           // 별개로, 만약에 num이 음수일 경우 양수로 만들어주기
 }
  // while 문을 사용해서 조건을 적어준다.
  // while()문 안에 들어갈 조건은?(num이 양수일 경우)

 while(num >=0) { // 따로 result 선언 안하고 해줘서 더 효율적인듯?? 미리미리 리턴값. 이렇게도 할수있음.
   if (num === 0) {
     return false
   } else if(num === 1) {         // 만약 num이 0이면? 짝수다! (false 리턴)
     return true                  // 만약 num이 1이면? 홀수다! (true 리턴)
   }                             // num이 0, 1 을 제외한 양수 경우 계속 -2
     num =num-2
   
 } 

        
}
10_makeMultiplesOfDigit2
2つの数(2つの数を含む)を入力し、2つの数の間の2倍を返さなければなりません.
--------------------------------<入力>--------------------------------
パラメータ1:num 1
numberタイプの整数(num 1>=0)
パラメータ2:num 2
numberタイプの整数(num 2>=0)
------------------------------------<出力>----------------------------------------------
numberタイプを返す必要があります.
---------------------------------------------------------------------------------------
繰り返し文を使用する必要があります.
num 1はnum 2より小さくない場合があります.
0が2の倍数ではないと仮定します.
-------------------------------------------------------------------------------------------------------------------------------
let output = makeMultiplesOfDigit2(8, 12);
console.log(output); // --> 3

output = makeMultiplesOfDigit2(12, 8);
console.log(output); // --> 3

output = makeMultiplesOfDigit2(1, 3);
console.log(output); // --> 1

output = makeMultiplesOfDigit2(0, 0);
console.log(output); // --> 0

output = makeMultiplesOfDigit2(2, 2);
console.log(output); // --> 1
----------------------------------------------------
function makeMultiplesOfDigit2(num1, num2) {
   // num1과 num2 사이에서 반복문을 돌려서 --> 시작용, 끝용 변수 선언
   // 그 사이에 2의 배수가 몇개나 있는지 확인한다--->카운트 용 변수 선언  
  let count = 0;          
  let start = num1;  
  let end = num2;

  if (num1 > num2) {  //  point 1 : 만약 num1이 num2보다 크다면? 
    start = num2;               //  start와 end바꿔주기
    end = num1;
  }

  if (start === 0) {  //  point 2 : start가 0인 경우에는 start를 1로 재할당(주의사항참고)
    start = 1;
  }
 
  for (let i = start; i <= end; i++) {    //  start부터 end까지 돌리자
    if (i % 2 === 0) {
      count += 1;
    }
  }

  return count;
}
17_isPrime
1つ以上の自然数を入力した場合は、小数(prime number)を返さなければなりません.
–––––––––––––入力––入力–––
パラメータ1:num
数値タイプの数
————————————————————————————————————————————————————————————————
booleanタイプを返す必要があります.
——————————————————————————————————————《入出力例》————————————
let output = isPrime(2);
console.log(output); // --> true

output = isPrime(6);
console.log(output); // --> false

output = isPrime(17);
console.log(output); // --> true
<ヒント>
内蔵JavaScriptオブジェクトMathを使用して不要な演算を削減します.(JavaScript平方根またはJavaScript平方根)
 // 약수의 개수가 2개뿐인 수 : 1과 자기자신만이 약수인 수
 // Math.sqrt() : Math.sqrt(9); -- 3 ///  Math.sqrt(2);-- 1.414213562373095  ---> parseInt 이용 정수만들어야겠다
 // 그래서 sqrt라는 변수선언하고 시작
 // 1은 소수가 아니다 :if num === 1 이면 false; 먼저 처리
 // 짝수는 소수가 아니다 but 2는 예외, if num === 2 면 true / num%2 ===0 이면 false;

 // for문으로 체크- i = 3부터 시작/ 제곱근 sqrt까지 체크/ 2씩 증감 
 // 홀수만 나옴->  ~ N제곱근까지 나눠본 후 하나라도 나눠떨어지는 것이 존재하면 false
 // num % i === 0 으로 false 값부터 빼내고
 // 나머지 true -> N제곱근까지 나눴음에도 나눠떨어지지 않는 경우 소수

function isPrime(num) {
  let sqrt = parseInt(Math.sqrt(num));

  if (num === 1) {
    return false;
  }

  if (num === 2) {
    return true;
  }

  if (num % 2 === 0) {
    return false;
  }

  for (let i = 3; i <= sqrt; i += 2) {
    if (num % i === 0) {
      return false;
    }
  }

  return true;
}
18_listPrimes
を入力し、2からその数までの小数(素数)を返します.
<入力>------------------------------------------------------------------
パラメータ1:num
numberタイプの整数(num>=2)
<出力>-------------------------------------------------------------------
stringタイプを返さなければなりません.
2-3-5-7の形式で返さなければなりません.
<注意事項>------------------------------------------------------------
二重繰り返し文(double for loop)を使用する必要があります.
I/O例
let output = listPrimes(2);
console.log(output); // --> '2'

output = listPrimes(6);
console.log(output); // --> '2-3-5'

output = listPrimes(18);
console.log(output); // --> '2-3-5-7-11-13-17'
<ヒント>------------------------------------------------------------------
重複文に関するbreak文を学習します.(javascript loop break)
function listPrimes(num) {   // 1. 2가 기본 시작 수 ... 일단 변수 result에 2를 할당해 쌓아나가야겠다.->결과값으로 변수 result를 리턴할수 있게끔

  let result = '2'         // 2. 2는 어차피 받으니까, for문의 초기화는 i= 3부터 시작
                          // num의 숫자 까지만 확인(이하)/ 2씩 증

  for(let i= 3; i <= num; i += 2;){     // 3. true - false값 따라 결과 내기 위한 변수 만들어줌(true 디폴트) 
                                        // parseInt(Math.sqrt(i)) 활용 거듭제곱근 구한수를 정수로 바꿔줌
  
  let judge === true;
  let sqrt = parseInt(Math.sqrt(i));
 
     for (let j =3; j <= sqrt; j += 2;){    // 4. 3이상 홀수들이 쌓이게 됨-> 그 숫자들을 for 문 안에 넣어 i마다 하나하나 확인
                                            //-> j = 3부터시작/ i의 거듭제곱근 까지만->i 2씩 증 
    
        if (i % j === 0) {       //5. i % j 해줘서 딱떨어지면 소수 아니므로 false값 줌, break로 내보냄
           judge === false;
           break;
          }
        }   
  
      if (judge) {        //6. 밖 for안에 true여야만 통과하는 조건문 만듬 result-``이용 문자열만듬 
          result = `${result} - ${i}`;
      } 
   }
  return result; 
 }   


}
使用
ex) 'e'의 존재, 수 찾기
const str = 'To be, or not to be, that is the question.'
  let count = 0
  let position = str.indexOf('e')

  while (position !== -1) {
  count++
  position = str.indexOf('e', position + 1)
  }

console.log(count) // displays 4