문제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) }
- arr이라는 빈 배열, newStr 라는 빈 문자열을 선언하며 할당해주기 위해 선언했다.
- for in 문으로 지정된 str을 담아주고 조건문으로
includes
메소드를 활용해, 특정값이 포함되도록 하기 위해 사용했다.newStr
빈 문자열에 할당하기 위해 먼저, str[i]번째 기존 문자열 인덱스를 제외하고 잘라줬다. 인덱스는 0부터 시작해서 +1을 했다.- 이제 newStr은 str[i]값에 더해줘 빈배열 즉, arr에 newStr의 길이를 담아주었다.
- 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] } } }
두가지의 값으로, 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을 제외한 값을 찾기 위해 하였다.