앞으로 다양한 알고리즘을 만나게될 코드카타를 시작하였다.
계속 코드를 작성하면서 이런 로직이 맞을가 라는 의문이 들고 확신이 없을때가 있는데 코드카타를 꾸준히 진행해 나의 개발 근육을 💪벌크업!! 시켜야겠다.
코트카타를 진행함에 있어 목표는 다음과 같다.
✔️ 대화를 통한 문제 해결 능력을 기릅니다.
✔️ 컴퓨터 공학의 기본 자료구조 및 알고리즘을 익힙니다.
✔️ 자바스크립트에 대한 이해도를 높입니다.
✔️ 수료 후 취업 준비 기간 중 있을 실제 코딩테스트의 수준을 체험한다.
알고리즘을 보고 무조건 코드를 치는데에만 몰두하지 말고,
하나 하나 구현해야 하는 ToDoList
를 작성 해야겠다.
이를 바탕으로 팀원과 어떠한 방식으로 접근할지 대화를 해야겠다.
refactoring
!twoSum함수에 숫자배열과 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.
nums: 숫자 배열 target: 두 수를 더해서 나올 수 있는 합계 return: 두 수의 index를 가진 숫자 배열
예를 들어,
nums은 [4, 9, 11, 14] target은 13
nums[0] + nums[1] = 4 + 9 = 13 이죠?
그러면 [0, 1]이 return 되어야 합니다.#가정
target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다.
내 솔루션
const twoSum = (nums, target) => {
let newArr = [];
for (let i = 0; i < nums.length; i++) {
for (let j = i+1; j < nums.length; j++) {
if (nums[i] + nums[j] === target) {
newArr.push(i);
newArr.push(j);
}
}
}
return newArr;
}
재현님 솔루션!
const twoSum = (nums, target) => {
for (i = 0; i < nums.length; i++) {
if(nums.indexOf(target-nums[i]) != -1) {
return [i, nums.indexOf(target-nums[i])];
}
}
}
처음에 내가 접근했던 방식은 빈배열에 push
하는 것이 아닌
단순히 for
문을 돌면서 풀려고 했었다. 하지만 너무 코드가 길어지고
해결하지 못하다가 지수님의 팁으로
빈 배열에 push
하는 방식으로 진행하여 해결하였다.
처음 사고방식의 스타트가 중요하다는 것을 느겼다.
재현님 코드는 처음 봤을때 감탄만 했다.
indexOf
를 활용한 접근을 생각도 못했는데 정말 적절한 메서드를 활용한 풀이였다.
indexOf
stringValue에서 특정한 문자열의 위치(index)를 반환한다.
탐색하려는 문자열이 존재하지 않는다면 -1을 반환한다.