12월 23일 복기

Ji Taek Lim·2020년 12월 23일

11_removeExtremes

문자열을 요소로 갖는 배열을 입력받아 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴해야 합니다.



TODO:
가장 짧은 문자열의 길이를 구하는 콜백함수
가장 긴 문자열의 길이를 구하는 콜백함수.


arr.=> method를 쓸 수 있다.




function removeExtremes(arr) {
  
  
  TODO: 여기에 코드를 작성합니다.
  문자열을 요소로 갖는 배열을 입력 받는다
  요소중 가장 짧은 문자열과 가장 긴 문자열 확인 
  가장 짧은 문자열 가장 긴문자열 제외 
  배열 리턴  
  나중에 위치한 문자열을 제거한다.
  가장 짧은 문자열이 2개일 경우 나중에 위치한 것을 delete한다.


  let minLength = arr[0] /// a, aaa //( aaa a )
  for (let i=1; i < arr.length+1 ; i++) { 
    if(minLength.length >= arr[i].length) { //다음게 같거나 작아
      minLength = arr[i] // 치환해
    }
    if(minLength.length < arr[i].length) { // 다음게 커
      minLength = minLength //그냥놔둬
    }
  }

  let  maxLength= arr[0] /// a, aaa // aaa a /// 다음것보다 내가 지금 현재 가지고 있는게 작으면 다음게 큰게 된다.
  for (let j =1; i < arr.length+1 ; j++) {
    if(maxLength.length <= arr[j].length) { //다음게 같거나 커
      maxLength = arr[j] // 치환해
    }
    if(maxlength.length > arr[j].length) { // 다음게 작아
      maxLength = maxLength /// 그냥놔둬
    }
  }

  let newArr =[] // 새로운 배열을 만들어
  for(let el of arr) {
    if(el !==minLength && el !== maxLength){
      newArr= newArr.push(el)
    }
  }

  return newArr;

}

17_computeSquareRoot

수를 입력받아 제곱근 값을 소수점 두 자리까지 리턴해야 합니다.

바빌로니아 법
https://ko.wikipedia.org/wiki/%EB%B0%94%EB%B9%8C%EB%A1%9C%EB%8B%88%EC%95%84_%EB%B2%95

바빌로니아 법(The Babylonian Method)은 임의의 수의 제곱근에 빠르게 수렴하는 수열을 만들어 근삿값을 구하는 방법이다. 뉴턴랩슨 법을 이용하여 이차방정식의 근사해를 구하는 것과 유사하다. 헤론의 저서에서 바빌로니아 법과 비슷한 형태의 풀이가 제시되었기 때문에 바빌로니아 법을 헤론의 제곱근 풀이법이라고 하기도 한다.

18_numberSearch
문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다.

function numberSearch(str) {
  // TODO: 1. 문자열을 입력받는데. 숫자를 모두 찾는다 (for문)
  // number를 리턴한다.
  // 2. 숫자들을 모두 더한다. 
  // 3. 숫자를 포함한 문자열의 길이로 나눈다.
  // 4. 정수로 반올림한다.
  // js includes

  if(str.length===0) {
    return 0;
  }

  let sum =0;
  for (let i =0; i <str.length; i++) {
    if(Number(str[i]) ==='number') {
      sum+= Number(str[i]);
    }
  }
  let average=(sum/str.length)
  return average
}

js includes


function numberSearch(str) {
  // TODO: 여기에 코드를 작성합니다.
  if(str.length === 0) {
    return 0;
  }
  let total = 0;
  let count = 0;
  for(let i = 0; i < str.length; i++) {
    if(str[i] >= '1' && str[i] <= '9') {
      total += parseInt(str[i]);
    }
    else if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z') {
      count++;
    }
  }
  return Math.round(total / count);
}

빈배열을 제거해주어야합니다...


19_decryptCaesarCipher

암호화된 문자열과 암호화 키를 입력받아 복호화된 문자열을 리턴해야 합니다.
카이사르 암호(Caesar cipher)는 평문(plaintext)을 암호키 secret개만큼 (오른쪽으로) 평행이동시켜 암호화 합니다. 복호화는 암호화된 문자열을 원래의 평문으로 복원하는 것을 말합니다.

카이사르의 암호..다... 로마 카이사르다..

로마인 이야기가 생각이 난다... 서양사를 좀 읽어볼까..


function decryptCaesarCipher(str, secret) {
  if (str.length===0) {
    return '';
  }
  let alphabet ='abcdefghijklmnopqrstuvwxyz'
  let singleAl = alphabet.split('');
  console.log(singleAl);
  let singleStr= str.split('');
  console.log(singleStr);

  let axis = secret;
  let newStr = '';
  for(let i=0; i<singleStr.length; i++) {
    for(let j =0; j<singleAl.length; j++) {
      if(singleStr[i] === singleAl[j]){
        console.log(singleStr[i])
        newStr= newStr + singleAl[j-axis];
      }
      if(singleStr[i] === ' ') {
        newStr =newStr + ' ';
      }
    }
  }
  return newStr;
}
````js
decryptCaesarCipher('khoor zruog',3)
(26) ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
(11) ["k", "h", "o", "o", "r", " ", "z", "r", "u", "o", "g"]
"hello                          world"

가 출력된다. 띄어쓰기를 어떻게 해야되는걸까.

function decryptCaesarCipher(str, secret) {
  if (str.length===0) {
    return '';
  }
  let alphabet ='abcdefghijklmnopqrstuvwxyz'
  let singleAl = alphabet.split('');
  console.log(singleAl);
  let singleStr= str.split('');
  console.log(singleStr);

  let axis = secret;
  let newStr = '';
  for(let i=0; i<singleStr.length; i++) {
    if(singleStr[i] === ' '){
      
    }
    for(let j =0; j<singleAl.length; j++) {
      if (singleStr[i] === singleAl[j]){
        console.log(singleStr[i])
        newStr= newStr + singleAl[j-axis];
      }
      if(singleStr[i] === ' ') {
        newStr =newStr+singleStr[i]
      }
    }
  }
  return newStr;
}
profile
임지택입니다.

0개의 댓글