📅 22.10.05
📖 파트너 : 모유진
문제설명 :
reverse
함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return 해주세요
x
: 숫자
return
: 뒤집어진 숫자를 반환
- nums: 숫자 배열
- target: 두 수를 더해서 나올 수 있는 합계
- return: 두 수의 index를 가진 숫자 배열
예를 들어,
x: 1234
return: 4321
x: -1234
return: -4321
x: 1230
return: 321
처음에는 문자열로 받은 변수를 배열로 반환하는데 양의정수와 음의정수 처리를 생각할때 -
부호를 따로 관리하여 빼둔다음 마지막에 조건문을 사용해 배열을 합치는 방향으로 생각을 했다
const reverse = x => {
const array = x.toString().split("");
console.log(array);
const minus = array.filter((el) => el === "-");
console.log(minus);
if (minus.length === 1) {
array.shift();
array.reverse();
const newArray = minus.concat(array).join("");
return Number(newArray);
} else {
return Number(array.reverse().join(""));
}
}
이 코드를 짤 때 유의해야 할 점은
.split()
메서드는 sting 타입에서 사용하여야만 배열로 반환이 가능하다 그래서 toString()
메서드를 먼저 써주어야한다filter
메서드로 각각의 배열요소가 "-"가 일치하는지 확인해 일치하는 값을 배열로 반환해 변수 minus로 담아 주었다if(minus)
를 true로 판단하지 않았다 값이 있는것은 truthy값으로 받아들여서 조건문을 충족할 줄 알았는데 아니었다.if(minus.lenght===1)
로 배열길이 조건을 넣어 코드를 짰다shift()
함수를 사용하여 부호를 빼냈고reverse()
함수를 사용해 값을 거꾸로 바꿔준다newArray
에 minus배열과 array배열을 concat
으로 배열을 합치고 join("")
으로 한문장으로 합친 값을 할당하고풀고 나서 조건문 부분이 너무 복잡해서 다른 방법을 생각해 보았다.
처음에는 -
부호라는 string으로 집착을 했었다면 애초에 변수 x 는 number 자료형이므로 그냥 숫자로 판단하면 간단한 문제였다.
전체적인 흐름은 비슷하나 음의 정수를 처리하는 방법을 달리 하였다.
const reverse = x => {
const str = x.toString().split("");
if (x < 0) {
str.shift();
return Number(str.reverse().join("")) * -1
} else {
return Number(str.reverse().join(""));
}
}
이 코드를 짤 때 유의해야 할 점은
reverse()
메서드는 배열에만 적용할 수 있는 메서드이다(숫자건 문자건). 일반적으로 우리는 하나의 문자열을 배열처럼 쓸 수 있지만 reverse 메서드는 그것이 불가능 하므로 필히 문자열도 split("")
으로 각각의 요소를 배열로 반환한 다음 reverse 사용이 가능하다x<0
조건으로 판단하여 처리 하는 방법이다.-1
곱셈으로 연산처리 해주면 간단하다