02. [Code kata] 1Week - Day 2

Lemon·2022년 5월 16일
0

알고리즘

목록 보기
2/4
post-thumbnail

📝문제

reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요.
x: 숫자 return: 뒤집어진 숫자를 반환!
예들 들어,

x: 1234  return: 4321
x: -1234 return: -4321
x: 1230  return: 321

풀이과정

let x = 1234;

.toString() 숫자를 문자로 변환

let str = x.toString(); // "1234"

.split('') 문자를 한글자씩 쪼개서 배열로 담기

let arr = str.split(''); // ["1","2","3","4"]

reverse() 배열을 뒤집어서 반환

let arrReverse = arr.reverse(); // ["4","3","2","1"]

join(’’)으로 배열에서 빼서 합치기

arrReverse.join('') // "4321" 

parseInt()로 문자를 숫자로 변환하기

parseInt(arrReverse.join('')) // 4321

👾문제점 발견

음수일 경우 let x = -1234- 까지 뒤집어져서 4321-이 반환되기 때문에 조건을 주어야했다.

let arrReverse = arr.reverse(); // ["4","3","2","1","-"]

arrReverse 에 - 가 포함된 경우 반환된 숫자 앞에 - 를 붙이고 포함되지 않을 경우 parseInt(arrReverse.join('')) 를 리턴하는 것으로 해결했다.

if(arrReverse.includes('-')){
  return -parseInt(arrReverse.join(''));
}else{
  return parseInt(arrReverse.join(''));
}

✅제출 답안

let x = 1234;
const reverse = x => {
  // 여기에 코드를 작성해주세요.
    let str = x.toString();
    let arr = str.split('');
    let arrReverse = arr.reverse();
    if(arrReverse.includes('-')){
      return -parseInt(arrReverse.join(''));
    }else{
      return parseInt(arrReverse.join(''));
    }
  
}

console.log( reverse(x) )

📌추후 수정 코드

let x = 1234;
const reverse = x => {
    if(x<0){
      return -parseInt(x.toString().split('').reverse().join(''));
    } else {
      return parseInt(x.toString().split('').reverse().join(''));
    }
}

console.log( reverse(x) )

🏃🏻‍♀️수정코드에 도달하기 까지...

슬기님 제공 코드

let x = 1234;
const reverse = x => {
	let toStringX = x.toString();
	let splitedX = toStringX.split('');
	let reversedX = splitedX.reverse();
	let finalRoString = reversedX.join('');
	let result = parseInt(finalToString);
	it(x<0){
		return result * -1;
	} else {
		return result;
	}
}

console.log( reverse(x) )

굳이 배열에 - 을 포함하는지 찾을 필요 없었다..!!
그냥 들어온 인자인 x의 값이 음수인지 아닌지만 비교하면 되는거였다....😂
위 코드를 참고해서 조건은 x < 0 으로 간단하게 바꿨다.

let x = 1234;
const reverse = x => {
    let str = x.toString();
    let arr = str.split('');
    let arrReverse = arr.reverse();
    if(x<0){
      return -parseInt(arrReverse.join(''));
    }else{
      return parseInt(arrReverse.join(''));
    }
  
}

console.log( reverse(x) )

변수로 쪼개서 작성했던 코드들도 한줄로 합쳐서 작성했다.

let x = 1234;
const reverse = x => {
    if(x<0){
      return -parseInt(x.toString().split('').reverse().join(''));
    } else {
      return parseInt(x.toString().split('').reverse().join(''));
    }
}

console.log( reverse(x) )

조금만 더 생각하면 간단한 방법을 찾아낼 수 있는데, 막상 하나씩 풀어가려니 생각이 잘 안난다😂 많이 풀어보고 다양한 방법으로 접근해보는 연습의 필요성을 느꼈다.

profile
프론트엔드 개발자 가보자고~!!

0개의 댓글