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
-
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'
가 나온다
- 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숫자에 맞는 인덱스번호의 요소를 출력한다
-
arr1 = []
,arr2 = []
두개는 같지 않다
arr1 === arr2
는false
이다
배열은 참조자료형이기 때문에 같은 값을 갖고있어도 다른 메모리주소를 가지고있다.
그래서 첫번째 if문안에if(arr === [])
라고 쓰면 안된다 -
첫번째 if문을 두번째if문보다 밑으로 둔다면
[1,3,5],3
을 입력받았을 때에 2번째 if문과도 겹쳐서'out of index range'
가 출력된다
Author And Source
이 문제에 관하여(DAY 12. 반복문 , 배열 복습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@syc765/DAY-12.-복습저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)