<문제를 풀면서 공부한 것>
< String()과 toString() >
1. String()
- 주어진 값을 문자열로 변환하는 함수
- 사용 방법 : String(123)은 문자열 "123" 반환
2. toString()
- 객체나 기본 데이터 타입에서 호출할 수 있는 매서드
- 사용 방법 : (123).toString()은 문자열 "123" 반환
3. 차이점
- String()은 문자열로 변환을 위한 함수
toString()은 객체나 값의 매서드
- String()은 null과 undefined를 각각 null과 undefined로 처리
toString()은 TypeError
ex) 예시코드
console.log(String(123));
console.log((123).toString());
console.log(String(null));
console.log(null.toString());
< 문제 2에 대한 GPT 의견 >
- 시간 복잡도 측면에서 단순히 긴 단어를 찾는 것은 sort()보단 reduce()나 forEach()를
추천해줌
- 전개 연산자가 메모리 사용을 하기 때문에 큰 문자열인 경우 불필요한 메모리 사용이 발생
Q1.
function reverse_to_number(number) {
}
let a = reverse_to_number(32125);
console.log(a);
let b = reverse_to_number(13251);
console.log(b);
< 나의 문제 풀이 1>
function reverse_to_number(number) {
const str = number.toString();
const arr = [...(str + "")];
const arrReverse = arr.reverse();
const arrToString = arrReverse.reduce((acc, cur) => {
return acc + cur;
}, 0);
const result = Number(arrToString);
return result;
}
let a = reverse_to_number(32125);
console.log(a);
let b = reverse_to_number(13251);
console.log(b);
< 나의 문제 풀이 2>
function reverse_to_number(number) {
const result = Number(
[...(number.toString() + "")].reverse().reduce((acc, cur) => {
return acc + cur;
}, 0)
);
return result;
}
let a = reverse_to_number(32125);
console.log(a);
let b = reverse_to_number(13251);
console.log(b);
< 강사님 문제 풀이 >
const reverse_to_number = (number) =>
Number(String(number).split("").reverse().join(""));
let a = reverse_to_number(32125);
console.log(a);
let b = reverse_to_number(13251);
console.log(b);
- 강사님의 풀이는 reduce보다 join을 사용하면서 더 깔끔해졌다.
- toString과 String의 차이에 대해 더 공부할 필요가 있음
- split도 사용해봐야 익숙해질 것 같다. 더 많은 케이스 만들 필요 있음
- 화살표 함수 표현에 대해 아직은 익숙치 않은 것 같다.
Q2.
function findLongStr(str) {}
let result = findLongStr("we are the champion");
console.log(result);
let result2 = findLongStr("i`m fine thank you, and you?");
console.log(result2);
< 나의 문제 풀이 >
function findLongStr(str) {
const strToArr = str.split(" ");
const arrSort = strToArr.sort((a, b) => b.length - a.length);
const arrShift = [...arrSort].shift();
return arrShift;
};
let result = findLongStr("we are the champion");
console.log(result);
let result2 = findLongStr("i`m fine thank you, and you?");
console.log(result2);
< 나의 문제 풀이 2 >
const findLongStr = (str) =>
[...str.split(" ").sort((a, b) => b.length - a.length)].shift();
let result = findLongStr("we are the champion");
console.log(result); // champion
let result2 = findLongStr("i`m fine thank you, and you?");
console.log(result2);
< 강사님 문제 풀이 >
const findLongStr = (str) =>
str
.split(" ")
.sort((a, b) => b.length - a.length)
.shift();
let result = findLongStr("we are the champion");
console.log(result);
let result2 = findLongStr("i`m fine thank you, and you?");
console.log(result2);
< 강사님 문제 풀이 2>
const findLongStr2 = (str) =>
str
.split(" ")
.reduce((acc, cur) => (acc.length > cur.length ? acc : cur), "");
let result = findLongStr("we are the champion");
console.log(result); // champion
let result2 = findLongStr("i`m fine thank you, and you?");
console.log(result2);
- 문자열의 원본을 파괴하지 않고 복사를 하기 위해 전개 연산자를 썼지만,
강사님의 풀이에서는 그렇지 않았다. 이 부분에 대해서 깊은 이해 없이 사용을 해서
좀 더 공부가 필요할 듯 하다
- reduce와 sort를 사용한 두 가지 방법에 대해서 적용을 쉽게 할 수 있도록 연습 필요