코드카타 알고리즘

Sunghae·2020년 2월 11일
0

오늘은 코드카타 둘째날!
제한시간 한시간동안 다 풀지못해 두시간정도 문제를 풀었지만 결국 썸밋을 하진 못했다. 알고리즘 문제를 풀때는 처음부터 모든 조건을 다 하려는 것보다 가장 기본인 것부터 차근차근 해나가야할 것 같다!!

reverse 함수는 정수를 인자로 받는데, 
인자를 뒤집어서 return하세요

ex) reverse(1234) -> return(4321)
    reverse(1230) -> return(321)
    reverse(-1234) -> return(-4321)
	
  1. 만약 숫자가 배열이라면 그 자체로 아니면 스트링으로 바꿨다.
    일단, 숫자도 문자처럼 그 자체가 배열인지 궁금해서 콘솔을 찍어봤지만 배열이 아니였기때문에 스트링으로 바꾸고 return할 배열을 만들어주었다.
function = x => {
	let str = String(x);
  	let newArr = [];
}
  1. for문을 통해 배열의 마지막 인텍스부터 돌면서 newArr에 push를 했다.
for (let i = str.length-1; i >= 0; i--) {
    newArr.push(str[i]);
}
  1. if문을 통해 0이 있는 경우에는 0을 제외시킨 값을 return하고 '-'가 있다면 '-'를 제일 앞에 더했다.
if (newArr[0] === "0") {
    //index[0] 부터 1개 짤라냄
    newArr.splice(0, 1); 
  } else if (newArr[newArr.length-1] === "-") {
    //'-'를 잘라낸뒤 배열의 제일 앞에 추가
    newArr.splice(newArr.length-1, 1);
    newArr.unshift("-");
  } 
  1. newArr의 원소들은 숫자가 아닌 스트링이기때문에 각각의 원소를 하나의 값으로 만들고 숫자로 변환했다.
//원소를 하나의 값으로 합치기
let last = newArr.join(""); 
//string->number로 변환
return Number(last); 

reverse(-1230) 일때는 undefined가 나온다. 내가 생각했을 때는 if문 첫번째 조건에서 0을 제거하고 두번째 if문에서 -의 값을 앞으로 추가해줄 것이라 생각했지만 아니였다..

0개의 댓글