오늘의 페어분과 함께 정규시간이 끝나고 공부를했다
나는 지난 2주동안 매일 4~5시간씩 복습하면서 대체 뭘 했던거지싶다 ㅜ
수도코드를 자세하게 쓰는 연습이 필요하다
디버깅하는법도 배웠다
HA에 통과하려면 지금보다 훨씬 열심히 공부해야겠다
수도코드를 잘 쓰는게 너무 어렵다 ㅜㅜ
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
odd는 1이라고 할당해 준것이 왜 while문의 바깥에 있어야할까?
odd가 반복문안에있으면 계속 1이라는 값이 나올것이다 그리고 과정을 생각해보면 odd가 1이라고 선언을 한 후에 odd가 홀수인지아닌지 수를 늘려가면서 확인해보는 것이다
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'
가 나온다
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^
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도 없이 쓰고있었다
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숫자에 맞는 인덱스번호의 요소를 출력한다
arr1 = []
, arr2 = []
두개는 같지 않다
arr1 === arr2
는 false
이다
배열은 참조자료형이기 때문에 같은 값을 갖고있어도 다른 메모리주소를 가지고있다.
그래서 첫번째 if문안에 if(arr === [])
라고 쓰면 안된다
첫번째 if문을 두번째if문보다 밑으로 둔다면 [1,3,5],3
을 입력받았을 때에 2번째 if문과도 겹쳐서 'out of index range'
가 출력된다