코드카타 #4

김태현·2020년 11월 5일
0

코드카타

목록 보기
3/9
post-thumbnail

이번 코드카타 문제는 쉬웠다!
어제 문제는 엄청 어려웠는데 이번은 나도 쉽게 풀수가 있었다.

우선 문제는 다음과 같고 ~

  • 문제

숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.

num: 숫자
return: true or false (뒤집은 모양이 num와 똑같은지 여부)

예를 들어,
num = 123
return false
=> 뒤집은 모양이 321 이기 때문

num = 1221
return true
=> 뒤집은 모양이 1221 이기 때문

num = -121
return false
=> 뒤집은 모양이 121- 이기 때문

num = 10
return false
=> 뒤집은 모양이 01 이기 때문

내 풀이는 다음과 같다

const sameReverse = num => {
  let strNum = String(num);
  let e = 0;
  let i = strNum.length - 1;
  if(num < 0) {
    return false;
  }
  while(e < i) {
    if(strNum[e++] !== strNum[i--]) {
      return false;
    }
  }
    return true;
}

sameReverse(101);

우선 num을 string 타입으로 변환한 후 변수에 저장한다.
그리고 반복문을 도는데 가장 처음과 끝 말단 값들이 서로 같은지 비교하면서 줄어든다.
여기서 주의할 점은 false일 경우에는 while 중간에 바로 false가 리턴되어서 반복문을 나와도 되지만 true일 경우에는 반복문을 전부 돌은 후에 true를 반환해야 하므로 while 문을 다 돌고난 후에 return을 해준다!
왜냐하면 예를 들어 num이 1321 이면 가운데 32는 서로 같지 않아서 false가 나와야 하는데 반복문을 돌면서 가장 말단의 값들 1과 1이 같으니까 그냥 true로 빠져나와버리기 때문이다!
전부 다 검사해야 하는데 맞다고 중간에 나와버리니 문제가 생기는 수 밖에

느낀점
반복문을 끝까지 돌면서 조건을 비교해야 한다면 return 문은 나중에 써주자
String은 배열처럼 인덱스가 붙어있으므로 인덱스 쓰겠다고 굳이 배열로 다시 안바꿔도 된다

profile
프론트엔드 개발자

0개의 댓글