DAY 12. 반복문 , 배열 복습

오늘의 페어분과 함께 정규시간이 끝나고 공부를했다
나는 지난 2주동안 매일 4~5시간씩 복습하면서 대체 뭘 했던거지싶다 ㅜ
수도코드를 자세하게 쓰는 연습이 필요하다
디버깅하는법도 배웠다
HA에 통과하려면 지금보다 훨씬 열심히 공부해야겠다

수도코드를 잘 쓰는게 너무 어렵다 ㅜㅜ

반복문 8

function makeOddDigits(num) {
let str = ''
let odd = 1 //???
while(num >= 1) {
  str = str + odd
  odd = odd +2
  num = num -1 //???
}
return str
}
//먼저, 빈문자열 변수를 str로 선언하고 ''로 초기화한다  let str = ''
// odd라는 이름의 변수를 선언한다 1로 초기화한다. //
//와일문으로 num값이 1보다 클때까지 반복시킨다
//반복 과정 중에서 odd값이 홀수인지 아닌지 확인한다
 //만약 odd값이 2로 나누어 떨어지지 않으면  odd는 홀수이기에 str에 문자로 변화시켜 넣는다
 // odd를 2로 증가시킨다
//그렇지 않으면  num을 하나 줄이고 반복문의 처음으로 돌아가 반복하게 한다 
//반복문이 끝나면 str을 반환한다  return str
  1. odd는 1이라고 할당해 준것이 왜 while문의 바깥에 있어야할까?
    odd가 반복문안에있으면 계속 1이라는 값이 나올것이다 그리고 과정을 생각해보면 odd가 1이라고 선언을 한 후에 odd가 홀수인지아닌지 수를 늘려가면서 확인해보는 것이다

  2. num는 왜 num -1이 되어야하나?
    이것도 머릿속으로 시뮬레이션을 돌려보면된다 예를들어서 num에 5가 입력되었으면 while문의 조건에 맞기때문에 while문속으로 들어온다 -> odd는 1이다 끝
    num가 하나씩 줄어야
    num가 5일때 odd가 1 , num가 4일때 odd가 3 , num이3일때 odd가 5 ,num가 2일 때 odd가 7, num가 1일때 odd가 9로 결과적으로 str을 출력하면

makeOddDigits(5)//-->'13579'

가 나온다

  1. if(odd%2 ! == 0) 조건을 지워도 된다
    odd를 이미 1로 할당을해놓았고 반복문내에서 2씩 커지기 때문이다

반복문9

function makeMultiplesOfDigit(num) {
let str = '';
for(let i= 1; i <= num ; i = i+1){
  if(i%3 === 0){
    str = str + i
  }
}
return str
}

//1부터 num사이의 숫자중 3의 배수로 구성된 문자열을 반환한다
// 먼저, str이라는 빈문자열을 선언합니다 ''로 초기화합니다
// 포문을 만들고 i는 1부터 num와 같을 때까지 반복시킨다
// 반복되는 동안 i가 3의 배수인지 확인한다
// 만약에 i가 3으로 나누어 떨어지면 3의 배수임으로 str에 i를 문자로 변환해 넣는다
// 그렇지 않으면 다시 포문의 처음으로 돌아가 반복한다
// 포문이 끝나면 str을 반환한다

이건 어제도 오늘도 풀린다 ^0^

반복문 12

function getMaxNumberFromString(str) {
let biggest = 0
for(let i = 0; i < str.length ; i++) {
  if(Number(str[i]) > biggest ){
    biggest = Number(str[i])
  }
}
return `${biggest}`
}

//'숫자' 이런 형태의 str을 입력받는다
//str의 letter들 중에서 가장 큰 값을 뽑아내야한다

//일단 result라는 변수를 선언한다 '로 할당해준다
//가장 큰 letter를 biggest로 선언해준다. 0으로 할당시켜준다
//for문을 사용해서 str의 letter들을 하나하나 살펴본다 i를 선언해주고 0으로 할당해준다. i는 str.length 보다 작다 i는 하나씩증가한다
//만약 Number( str[i] )가 biggest보다 크다면 biggest는 Number( str[i] )로 재할당된다
//if 빈 문자열을 입력받는다면 0을 리턴한다
//`${biggest}`를 리턴한다

진짜 힘겹게 맞았다.. 빈 문자열을 받으면 0이 나와야해서 맨 처음에 maxNum을 0으로 할당했던 것이다. 그리고 어제는 Number쓰는걸 잘 했는데 오늘은 Number도 없이 쓰고있었다

배열 4

function getNthElement(arr, index) {
  if (arr.length === 0) {
    return undefined;
  } else if (arr.length - 1 < index) {
    return 'out of index range';
  } else {
    return arr[index];
  }
}
//arr과 index를 입력받는다
//만약 arr의 길이보다 큰 index를 입력받는다면 'out of index range'를 리턴한다
//만약 arr.length가 0이라면 'undefined를 리턴해야한다 (arr === [] 는 false라서 이걸 조건으로 못씀)
//arr의 길이보다 작은 index를 입력한다면 arr의 index숫자에 맞는 인덱스번호의 요소를 출력한다
  1. arr1 = [] , arr2 = [] 두개는 같지 않다
    arr1 === arr2false이다
    배열은 참조자료형이기 때문에 같은 값을 갖고있어도 다른 메모리주소를 가지고있다.
    그래서 첫번째 if문안에 if(arr === [])라고 쓰면 안된다

  2. 첫번째 if문을 두번째if문보다 밑으로 둔다면 [1,3,5],3을 입력받았을 때에 2번째 if문과도 겹쳐서 'out of index range'가 출력된다

좋은 웹페이지 즐겨찾기