Code-Kata 오답노트 (1~2차)

DY·2021년 8월 19일
1
post-thumbnail

이번주부터 2인 1조로 풀이하는 코드카타시간. 그 동안 자바스크립트를 얼마나 공부했는가, 나의 문제해결실력을 얼마나 차곡차곡 쌓아왔는가를 알 수 있는 시간이 될 것이다. 아직 모르는게 많은 나는 매회 문제들을 내 힘으로 최대한 생각해보고, 다른 사람들의 답을 참고하더라고 반드시 이해하고 넘어가려고 한다. 매 문제마다 느끼는 막막함과 좌절감은 공부의 또 다른 동기가 되었으면 좋겠다.

문제 1️⃣

twoSum함수에 숫자배열과 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.

  • nums: 숫자 배열
  • target: 두 수를 더해서 나올 수 있는 합계
  • return: 두 수의 index를 가진 숫자 배열

🤔 생각했던 답안

  • for문을 이용하여 nums 배열의 index수 만큼 추출
  • nums 배열에 포함한 두수를 합이 target과 같아야하기 때문에 i와 j동시에 for문으로 추출 (2중 for문 사용)
  • 추출된 i와 j의 값이 같지 않을 경우(if), 배열의 i와 j index에 해당하는 값의 합이 target과 같을 경우 i와 j를 배열로 반환

🙁 이중 for중, 이중 if문 등 코드의 과한 중첩으로 다소 지저분한 느낌이다.

❗️ 다른 답안 (위코드 동기분이 작성하신 답안)

  • forEach문을 이용하여 간결하게 작성하셨다.
  • 문제가 a + b = target이라면, a값과 b값을 하나하나 찾으며 푸는 방법도 있지만
    target - b = a가 될 수 있음을 생각하여 풀 수 있다.
  • forEach문에서 요소 뿐아니라 인덱스까지 인자로 추가할 수 있는 점을 알 수 있었다

문제 2️⃣

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

  • 예들 들어, x: 1234 return: 4321
    x: -1234 return: -4321
    x: 1230 return: 321

🤔 생각했던 답안

  • 주어진 인자를 string화
  • split 함수를 이용하여 각 숫자로 배열화
  • reverse 함수를 이용하여 배열을 반대로 나열
  • if문을 사용하여 x가 양수일 경우와 음수일 경우 구분
    -> 음수: 배열에서 -를 제외하고, slice함수로 새로운 배열을 추출. join함수로 배열의 요소를 모두 합친 string으로 추출한 다음 -1을 곱하여 number화
    -> 양수: join함수로 배열의 요소를 모두 합친 string으로 추출한 다음 -1을 곱하여 number화

❗️ 다른 답안 (위코드 동기분이 작성하신 답안)

  • 인수 string화, split함수로 배열화, reverse로 배열을 반대로 나열, join으로 요소를 모두 합친다.
  • parseInt로 묶어주어 정수로 추출.
  • Math.sign메소드를 이용하여 인수가 양수 or 음수에 따라 반환값을 양수 or 음수로 변환.

😲 양수, 음수를 판단하는 if문을 Math.sign 메소드로 대체하여 더욱 간결한 답안이 되었다. 함수 속에 메소드를 나열하는 방법도 알 수 있었다.

코드카다 첫 후기: 문제를 받자마자 전혀 감이 잡히지 않고, 머릿속이 백지장이 된 것 같아 그동안 나는 뭐했나 자괴감이 정말 컸다. 답을 알아가는 과정이 정말 괴로울지라도...풀어가는 과정 하나하나를 상세화하고 나의 힘으로 최대한 찾아보는 습관을 기르자.(낚시대를 쥐어주는 구글링은 약이고, 물고기를 입에 넣어주는 구글링은 독이다.) 기록과 피드백이 쌓이다보면 언젠가는 나름 괜찮은 답을 찾아낼 수 있을거라고 믿을 것이다!

profile
본질은 개발자 그 자체가 아니라, 개발을 임하고 해내는 방식에서 드러난다.

2개의 댓글

comment-user-thumbnail
2021년 8월 20일

"낚시대를 쥐어주는 구글링은 약이고, 물고기를 입에 넣어주는 구글링은 독이다." 정말 좋은 말인 것 같습니다.
이 말을 기억하며, 더 발전할 수 있도록 저도 열심히 해야겠어요! 좋은 글 감사합니다!

1개의 답글