[ JS ] 코딩테스트, 풀고 기록하기 1일차 🧑🏻‍💻

DamHo Bae·2021년 6월 8일
1

오늘부터 코딩테스트 공부를 꾸준히 해보려고 하며, 정리를 위한 기록 1일차!!

문제1.

중복되지 않는 알파벳에서 단어가 제일 긴 단어 찾기.
ex) abcabcabc -> "abc", aaaaaa -> "a", abbsrf -> "srf"

const getLengthOfStr = str => {
  let arr = [];
  let newStr = "";
  for(let i in str){
    if(newStr.includes(str[i])){
      newStr = newStr.slice(newStr.indexOf(str[i]) +1);
    }
    newStr += str[i];
    arr.push(newStr.length);
  }
  return Math.max(...arr)
}
  1. arr이라는 빈 배열, newStr 라는 빈 문자열을 선언하며 할당해주기 위해 선언했다.
  2. for in 문으로 지정된 str을 담아주고 조건문으로 includes 메소드를 활용해, 특정값이 포함되도록 하기 위해 사용했다.
  3. newStr 빈 문자열에 할당하기 위해 먼저, str[i]번째 기존 문자열 인덱스를 제외하고 잘라줬다. 인덱스는 0부터 시작해서 +1을 했다.
  4. 이제 newStr은 str[i]값에 더해줘 빈배열 즉, arr에 newStr의 길이를 담아주었다.
  5. return 하여, Math 메소드를 사용해 max 최대값을 arr 객체를 꺼내어 ...arr로 max(최대값)을 구할 수 있었다.

문제 2.

for(let i = 0; i < nums.length; i++){
  for(let j = i + 1; j < nums.length; j++){
    if(nums[i] + nums[j] === target){
      return [i,j]
    }
  }
}
  1. 문제 해석만 잘하고, for문을 사용하면 간단하다.
  2. 일단 문제에 나왔듯이 twoSum은 숫자배열이며, target은 특정 수를 합친 합계임을 알 수 있다.

그럼 어떻게 푸느냐?

두가지의 값으로, nums의 길이를 찾고, 중첩 for을 사용해 i와 j값을 돌린 후,
nums[i] 값과 nums[j]값을 더하여 합계 즉, target과 비교하고 return값을 배열 i와 j로 반환한다.

문제 3.

let num = String(Math.abs(x)).split("").reverse().join(""); return x >= 0 ? +num : -num;

한줄이면 끝난다..?

사실, 이 문제는 도저히 접근하기 어려웠었다. 메소드 구글링하여, 조심스럽게 접근하면 간단한 문제!

String으로 절대값 x를 찾고, 문자열을 자르고, 그 값을 reverse 변수안에 조인 해줬다.
마지막, 반환값은 삼항연산식으로 x의 값이 (+,-)를 찾고, 0을 제외한 값을 찾기 위해 하였다.

profile
Frontend Developer

0개의 댓글