[Code-kata] weekly good idea!

·2022년 9월 4일
0

TIL

목록 보기
4/10
post-thumbnail

이번주부터 Code-Kata를 진행했다.
2~3인 1조로 소통하고 협력해서 하루에 한 문제씩 해결하는 과제인데,
해당 문제를 파트너와 내가 각자 네비게이터 또는 드라이버를 맡아 주어진 문제를 풀어야 한다.

Code-kata는 단순히 협력해서 문제를 해결하는것뿐만 아니라,

  • 코드를 보며 정확하고 유연하게 소통하고
  • 보다 좋은 성능, 간결한 코드, 가독성 좋은 코드로 로직을 짜고
  • 소통하고 협력할 수 있는 의사소통 능력을 기르는것을 의식하며 진행하는것이 좋다.

아래는 이번주 내용 중 개인적으로 유레카(!)를 외쳤던 문제이다.

Day2, 문제는 간단하다.

reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집어서 return해주세요.
x: 숫자 , return: 뒤집어진 숫자를 반환!
ex)
x: 1234 | return: 4321
x: -1234 | return: -4321
x: 1230 | return: 321

처음 문제를 보고 떠올린 로직은
1) 받은 숫자 x를 string화하고, split으로 한 문자씩 쪼개 배열에 집어넣는다
2) reverse(); 메소드를 이용해 뒤집는다
3) if문을 이용해
3-1) '-'를 포함한다면, for 문을 돌려서 새로운 배열에 집어넣고 int값으로 return
3-2) 포함하지 않는다면, 다시 if문으로 0을 포함한다면....

위와 같은 방식으로 로직을 떠올리고 코드를 써내려갔는데
하다보니 for문과 if문이 계속해서 등장하고... 여기서 뭔가 잘못되어간다는걸 느꼈다
로직이 비효율적이고, 가독성이 떨어졌다.

그래서 고민하던 중,
동기가 준 아이디어로 굉장히 간결하고 간단하게 나타내는 방법을 알게되었다.

const reverse = x => {

 let arr = String(x).split("");
 arr.reverse();
 
 if(arr.includes('-')){
   const x = arr.pop();
   arr.unshift(x);
 }
 return parseInt(arr.join(''));
}

module.exports = { reverse };

1) 받은 숫자 x를 string화하고, split으로 한 문자씩 쪼개 배열에 집어넣는다
2) reverse(); 메소드를 이용해 뒤집는다
3) if문을 이용해 '-'를 포함한다면,
변수 x에 .pop();으로 배열의 맨 끝 값을 삭제하고,
.unshift();으로 배열의 맨 앞에 값을 추가한다.
4) return 값으로 parseInt()를 이용해 데이터타입을 변경하고,
.join('')을 이용해 배열들을 붙이면 된다.
parseInt() 를 사용했으므로 x값이 1230이면 0321, 즉 321로 리턴할 수 있게 된다. (물론 나머지 케이스도 구현 가능!)


20줄 이상의 코드가 단 몇줄로 구현이 가능한 것을 보면서 신기했고,
좋은 코드를 짜는것의 중요성을 느꼈다 (물론 코드에는 정답이 없다 ~~)
크크 다음주 코드카타도 파이팅 ~ !!! 🙌

profile
병아리 개발자입니다 🐥 틀린 정보가 있다면 말씀해주세요!

0개의 댓글