String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str: 텍스트 return: 중복되지 않은 알파벳 길이 (숫자 반환)
예를 들어, str = "abcabcabc" return 은 3 => 'abc' 가 제일 길기 때문
str = "aaaaa" return 은 1 => 'a' 가 제일 길기 때문
str = "sttrg" return 은 3 => 'trg' 가 제일 길기 때문
const getLengthOfStr = (str) => {
let result = []; // 인자가 담길 수 있는 빈 배열.
let resultLength = 0;// 가짜로 정해준 값.
// ➊
for(let i=0; i < str.length; i++){
if(result.indexOf(str[i]) === -1){
result.push(str[i]);
// ➌
if(resultLength < result.length){
resultLength = result.length;
}
}else{ // ➋
result = result.slice(result.indexOf(str[i]) +1);
}
}
return resultLength;
};
getLengthOfStr("sttrg") // -> 2
여기서, slice메서드로 잘라주는데,(인덱스번호 3번과 같은,그 중 가장 첫번째 번호를 반환해주는 indexOf메서드를 사용한다. 그리고 +1을 하여서 반환 해준 값까지 자를 수 있게 해 준다.)
이 부분에서 도대체 왜 +1을 해주는 건지 이해를 못했었는데,
indexOf 속성을 잘 인지하지 못해서 코드를 이해 할 수 없었던 것 같다.
안에 있는 배열이 다 삭제되었으니, 다시 빈 배열에 넣어준다.
여기서 왜 resultLength 의 값을 임의로 정해준건지 이해가 안되어서 변수를 선언하지 않고,➌번에서 바로 리턴을 해줘봤는데, 조건문을 돌면 매번 ➌번의 값이 재할당 되어야 최종 길이가 나오지만, 리턴을 해버리면 바로 중지가 되기때문에
1이 반환되는 것을 확인 할 수 있었다.
역시 리턴은 신중하게 해줘야 하는것을 다시한번 느꼈다.
(근데 이거 푸신분들은 정말 대단하신듯..금방 이해하신 분들도..)
숫자인 num을 인자로 넘겨주면,
뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.
num: 숫자 return: true or false (뒤집은 모양이 num와 똑같은지 여부)
예를 들어,
num = 123 return false => 뒤집은 모양이 321 이기 때문
num = 1221 return true => 뒤집은 모양이 1221 이기 때문
num = -121 return false => 뒤집은 모양이 121- 이기 때문
num = 10 return false => 뒤집은 모양이 01 이기 때문
const sameReverse = num => {
let resultNum = num.toString(); //인자를 string 으로 변환
let result = resultNum.split('').reverse().join('');
if(resultNum === result){
return true;
}else{
return false;
}
}
2일차 문제에서 배운 메서드들이 도움이 되었다..!