궁금한게 많은 코린이의 Developer 노트

[TIL] 문자 리스트를 문자열로 반환하기 (Math.max(),+연산자) 본문

TIL

[TIL] 문자 리스트를 문자열로 반환하기 (Math.max(),+연산자)

lemonarr🍋 2024. 2. 8. 11:38

 

나의 풀이

function solution(arr) {
    var arrArray = arr.join('');
    var answer = `${arrArray}`;
    return answer;
}

 

 

다른 사람의 풀이를 보면서 변수하나 빼도 구동이 가능하다는 것을 알게되었다..

join 메서드를 사용한 것을 보면 문제 접근법은 나쁘지 않았던 것 같다.

 

 

다른사람의 풀이 1

function solution(arr) {
    return arr.join("")
}

 

join 메서드를 사용하여 더 간결하게 푼 풀이이다.

 

 

다른사람의 풀이 2

function solution(arr) {
    var answer = '';
    arr.forEach(str=>{
        answer += str;
    })
    return answer;
}

 

 

비어있는 문자열 변수 answer에 forEach 문을 사용해서

순서대로 배열을 하나씩 넣어주었다.

 

 

 

다른사람의 풀이 3

function solution(arr) {
    var answer = '';

    for(let i of arr){
        answer += i;
    }

    return answer;
}

 

 

위의 풀이와 마찬가지로 for of를 사용해서 순서대로 배열에 넣어주었다.

 

 

 

다른사람의 풀이 4

 

function solution(a, b) {
  const calculate = (a, b) => +`${a}${b}`;
  return Math.max(calculate(a, b), calculate(b, a));
}

 

 

이 풀이를 분석해보면서 신기했던 것은 

템플릿 리터럴 앞의 + 연산자이다.

 

+연산자는 문자열을 숫자로 바꾸어주는 역할을 하기도 한다.

a와b를 연결한 뒤 + 연산자로 숫자로 변환할 수있다는 것이 신기했다.

ParseInt() 메서드나 Number() 메서드를 사용해서 숫자로 변환해주었는데

+ 연산자로도 문자열이 숫자로 바뀌는게 신기하다.

 

 

타입을 분석해보았을 때,

+`${a}${b}`; --> number

`${a}${b}`;  -->string으로 나온다.\

 

저 풀이에서는 + 연산자가 없어도 풀이가 가능하다.

즉, 다른 메서드에서 문자를 숫자로 바꾸어주는 기능을 가지고 있다는 뜻인데,

Math.max (최대값 구하는 메서드)는 + 연산자와 마찬가지로 해당 역할을 수행한다.

function solution(a, b) {
  const calculate = (a, b) => `${a}${b}`;
    //console.log(typeof(+`${a}${b}`)); //number
     //console.log(typeof(`${a}${b}`)); //string
  return typeof(Math.max(calculate(a, b), calculate(b, a)));
}

 

 

 

결론 ) +연산자와 Math.max() 메서드는 문자열을 숫자로 바꿔주는 기능을 가지고 있다