๐ Today Question
reverse ํจ์๋ ์ ์ 'x' ๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค. ์ ์ 'x'๋ฅผ ๋ค์ง์ด return์ผ๋ก ๋ฐํํด์ฃผ์ธ์.
ex)ใ คx = 1234 ๏ฝreturn = 4321
ใ ค ใ ค x = -1234๏ฝreturn = -4321
ใ ค ใ ค x = 1230๏ฝreturn = 321
โ Check Point 1
: ํ๋ผ๋ฏธํฐ x = ์ ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ x๋ฅผ ๋ค์ง์ด ๋์ดํ ๊ฐ์ return์ด ๋๋ค.
โ Check Point 2
: x๋ ์์ ์ ์, 0, ์์ ์ ์๊ฐ ๋ ์ ์๋ค.
๐ Step 1 : x๋ฅผ ๋ค์ง์ ์ ์๋ ํํ๋ก ๋ง๋ค์!(1)
// x = -9876์ด๋ผ๊ณ ๊ฐ์ ํ ๋
const reverse = x => {
let num = x.toString();
//toString์ ๋ฌธ์์ด์ ๋ฐํํ๋ ๋ฉ์๋
//num = "-9876"
}
๐ Step 2 : x๋ฅผ ๋ค์ง์ ์ ์๋ ํํ๋ก ๋ง๋ค์!(2)
// x = -9876์ด๋ผ๊ณ ๊ฐ์ ํ ๋
const reverse = x => {
let num = x.toString();
//toString = ๋ฌธ์์ด์ ๋ฐํํ๋ ๋ฉ์๋
//num = "-9876"
let newNum = num.split('');
//split = ()์์ ์ง์ ๋ ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋๋ ์ค, ('')์ฌ์ด ๊ณต๋ฐฑ ์์ด ๊ตฌ๋ถ์ ''๋ฅผ ์ค ๊ฒฝ์ฐ ๊ธ์๋ณ๋ก ์๋ฆผ
//newNum = "-","9","8","7","6"
let newArray = [] ;
// newNum ๋ฌธ์์ด์ ๋ด์ ๋น array ์์ฑํด๋๊ธฐ
}
๐ Step 3 : ๋ฑ๊ฐ๋ก ์ชผ๊ฐ์ ธ ์๋ x ๋ฌธ์์ด์ ๋น array์ ๊ฑฐ๊พธ๋ก ๋ด์!
// x = -9876์ด๋ผ๊ณ ๊ฐ์ ํ ๋
const reverse = x => {
let num = x.toString();
//toString = ๋ฌธ์์ด์ ๋ฐํํ๋ ๋ฉ์๋
//num = "-9876"
let newNum = num.split('');
//split = ()์์ ์ง์ ๋ ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋๋ ์ค, ('')์ฌ์ด ๊ณต๋ฐฑ ์์ด ๊ตฌ๋ถ์ ''๋ฅผ ์ค ๊ฒฝ์ฐ ๊ธ์๋ณ๋ก ์๋ฆผ
//newNum = "-","9","8","7","6"
let newArray = [] ;
// newNum ๋ฌธ์์ด์ ๋ด์ ๋น array ์์ฑํด๋๊ธฐ
for (let i = newNum.length - 1; i >=0; i--){
//newArray์์ newNum์ ๋ ์ธ๋ฑ์ค(newNum.length - 1)๋ถํฐ ๊ฐ์ฅ ์์ ์ธ๋ฑ์ค(0)๊น์ง ์ญ์์ผ๋ก ๋ด์์ผํ๊ธฐ ๋๋ฌธ์ i์ ๋ฒ์๋ 0์์๋ถํฐ newNum.length - 1๊น์ง๋ก ์ง์ ํ๋ค.
//์ธ๋ฑ์ค๋ฒํธ๋ 0 ๋๋ ์์์ธ ์ ์๋ง ๊ฐ๋ฅํ๋ฏ๋ก i >= 0 ์ด true์ผ ๋๊น์ง ์คํํ๋ for๋ฌธ์ด๋ค.
newArray.push(newNum[i]);
//newArray = ["6","7","8","9","-"]
}
}
๐ Step 4 : ์์, ์์, 0์ ๊ณ ๋ คํ์ฌ x๋ฅผ ๋ค์ง์ ์ซ์๋ฅผ ๋ฐํํ์!
// x = -9876์ด๋ผ๊ณ ๊ฐ์ ํ ๋
const reverse = x => {
let num = x.toString();
//toString = ๋ฌธ์์ด์ ๋ฐํํ๋ ๋ฉ์๋
//num = "-9876"
let newNum = num.split('');
//split = ()์์ ์ง์ ๋ ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋๋ ์ค, ('')์ฌ์ด ๊ณต๋ฐฑ ์์ด ๊ตฌ๋ถ์ ''๋ฅผ ์ค ๊ฒฝ์ฐ ๊ธ์๋ณ๋ก ์๋ฆผ
//newNum = "-","9","8","7","6"
let newArray = [] ;
// newNum ๋ฌธ์์ด์ ๋ด์ ๋น array ์์ฑํด๋๊ธฐ
for (let i = newNum.length - 1; i >=0; i--){
//newArray์์ newNum์ ๋ ์ธ๋ฑ์ค(newNum.length - 1)๋ถํฐ ๊ฐ์ฅ ์์ ์ธ๋ฑ์ค(0)๊น์ง ์ญ์์ผ๋ก ๋ด์์ผํ๊ธฐ ๋๋ฌธ์ i์ ๋ฒ์๋ 0์์๋ถํฐ newNum.length - 1๊น์ง๋ก ์ง์ ํ๋ค.
//์ธ๋ฑ์ค๋ฒํธ๋ 0,์์์ ์๋ง ๊ฐ๋ฅํ๋ฏ๋ก i >= 0 ์ด true์ผ ๋๊น์ง ์คํํ๋ for๋ฌธ์ด๋ค.
newArray.push(newNum[i]);
//newArray = ["6","7","8","9","-"]
}
let newString = newArray.join('');
//newString = ["6789-"]
if (newString.slice(-1) === "-"{
//newString.slice(-1) === "-" ๊ฐ์ฅ ๋ ๋ฌธ์๊ฐ "-"๋ผ๋ฉด
newString = '-' + newString.slice(0, -1);
//newString.slice(0, -1)์ newString์ ๋ง์ง๋ง ๋ฌธ์์ด๋ง ์ ์ธํ๊ณ ์ ๋ถ ์ถ๋ ฅ
//newString = ["-6789"]
}
let reverseResult = parseInt(newString);
//parseInt = ๋ฌธ์๋ฅผ ์ซ์ํ์
(intํ)์ผ๋ก ๋ณํํ๋ ๋ฉ์๋
// reverseResult = -6789
return reverseResult;
}
โ ์๋ฐ์คํฌ๋ฆฝํธ์๋ math.sign() ๋ด์ฅํจ์๊ฐ ์๋ค. math.sign()์ ์ฌ์ฉํ๋ฉด ์ธ์๊ฐ ์์, ์์, 0 ์ค ๋ฌด์์ธ์ง ํ์ธํ ์ ์๋ค.
โ ๋ด ์ฝ๋์์๋ ํ๋ ํ๋ ์๋ก ๋ณ์๋ฅผ ๋ง๋ค์ด์ ๋จ๊ณ๋ณ๋ก .toString, .split, .join ๋ฑ์ ์ฌ์ฉํด์คฌ์ง๋ง ์ฌ์ค ์ด๋ด ํ์๊ฐ ์๋ค.
๋ณ์์ด๋ฆ.toString().split('').join('') ์ผ๋ก ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๋ค.
โ ๋ด ์ฝ๋์์๋ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด๋์ x๋ฅผ for๋ฌธ์ผ๋ก ํ๋ํ๋ ๋ค์ง์ด์คฌ์ง๋ง reverse() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์์์ ๋ค์ง์ด์ค๋ค!