코딩테스트

코딩테스트 풀이 - 자릿수 더하기 | 문자 -> 숫자, 숫자 -> 문자로 형 변환, 전개구문 spread syntax

히새 2023. 10. 26. 16:35

오.. 각 자리의 수를 어떻게 나누지?.. 숫자를 숫자로 안보고 문자로 본다면 분해만 해줘도 되지 않을까!?

 

🎈 내가 생각한 방법

 

1. 매개변수 n 을 문자형으로 바꿔준다

2. spread 로 펼쳐준다.

3. 반복문으로 모든 숫자의 합을 더해준다.

4. 반환한다.

이렇게 작성해보았는데, 아차.. 문자열로 바꿔준 숫자 목록들을 그대로 더하니 저렇게 나왔다.

전개구문으로 담아줄 때에 숫자로 형변환을 해주어야한다.!

 

담아줄 때 형 변환 하는 방법은 모르겠어서 배열에 담은 것을 반복문 돌려 형변환을 시켜주었다.

그런데 결과값은 여전히 형 변환이 되지 않았다.... 왜지?

 

곱하기 1을 해서 암시적 형 변환이 안되어서 Number() 로 명시적 형변환을 시도해보았다

여전히 안된다 왜지???????????

 

5번 줄과 6번 줄을 합치라는 동기님의 조언을 듣고 작성해보았다. 야호!

 

맨 위 코드에서 형 변환이 되지 않았던 이유는 나중에 추가하도록 하겠다.

값을 받는? 친구가 없어서 안됐던것이다... 담아줬어야 했음 !!!

 

🎈 reduce 를 사용한 풀이


🎈 숫자 => 문자로 형 변환

 

 

- toString() 메서드

const str = number.toString();

console.log(typeof(str));
// String

- String

const str1 = String(number);

console.log(typeof(str1));
// String

- 빈 문자열 붙히기

const str3 = number + "";

console.log(typeof(str3));
// String

- 템플릿 문자열 Template String

const str4 = `${number}`

console.log(typeof(str4));
// String

 

🎈 숫자 => 문자로 형 변환

 

- Number()

const num = Number("String");

console.log(typeof(num));
// Number

- parseInt() : 정수로 형변환

const num1 = parseInt("123.12");

console.log(num1);
// 123

console.log(typeof(num1));
// Number

- Math.ceil() : 올림

const num2 = Math.ceil("123");

console.log(num2);
// 123

console.log(typeof(num2));
// Number

- Math.floor() : 내림

const num3 = Math.floor("123.53");

console.log(num3);
// 123

console.log(typeof(num3));
// Number

- Math.abs() : 절대값

const num4 = Math.abs("123");

console.log(num4);
// 123

console.log(typeof(num4));
// Number

 

🎈 전개구문 spread syntax

 

점 세개 (...) 가 이어진 연산자를 통해 사용된다. 배열, 문자열과 같은 반복 가능한 요소 앞에 사용해서 배열의 개별 요소를 다른 배열이나 함수의 인자로 펼쳐서 넘길 수 있다.

{...obj}

[...arr] / {...arr}

- 문자열을 배열로 만들기

let str = "string";
let arrStr = [ ...str ];

console.log(arrStr);
// [s, t, r, i, n, g]

- 배열 합치기

let arr1 = [1, 2, 3];
let arr2 = [0, ...arr1, 4];

console.log(arr2);
// [0, 1, 2, 3, 4]

- 배열 연결하기

let arr1 = [a, b, c];
let arr2 = [d, e];

array1.push(...arr2);

console.log(arr1);
// [a, b, c, d, e]

- 객체 합치기

let obj1 = { a: 'A', b: 'B' };
let obj2 = { c };
let obj3 = { ...obj1, ...obj2 };

console.log(obj3);
// { a: 'A', b: 'B', c: 'C', d: 'D' }