알고리즘(with TS)

알고리즘 풀이 1)15-17번

S_sunny 2023. 1. 14. 02:01
15. 가운데 문자 출력

 

function solution15(str:string):string {
  const minIndex = Math.floor(str.length/2)
  return str.length%2 === 0
    ? str.slice(minIndex-1, minIndex+1)
    : str.slice(minIndex, minIndex+1)
}
console.log(solution15('study'));

+  '/' 연산자가 몫을 구하는 연산자인 줄 알았는데 강의를 들으면서 그냥 나눗셈 연산자였다는걸 깨달았다.

JS에서는 몫을 구하는 연산자가 없다! Math.floor()를 쓰던지 나눗셈 결과에서 나머지를 빼던지 해야한다.

 

+ 삼항연산자 앞에 return을 써주는걸 잊어서 왜 undefined가 나오나 하고 당황했다.

 

 

16. 중복문자제거
 
function solution16(str:string):string {
  return [...str].filter((char, i) => [...str].indexOf(char)===i).join('')
}
console.log(solution16('ksekkset'));

filter함수도 잊고 있었다.  filter(()=>{})는 콜백함수가 true일 때 그 요소를 결과에 포함시킨 새 배열을 반환한다.
indexOf(element)는 배열에서 해당 요소의 Index를 리턴하는데, 중복된 값이 있을 때는 가장 처음의 Index를 리턴한다.

만일 발견하지 못하면 -1을 리턴한다.

indexOf(element) === index가 true가 되는 경우는 하나 뿐이고, 다른 중복된 값은 false가 리턴된다. 

* indexOf(element, position) -> position:찾기 시작할 위치. 0이 기본값.

 

17.중복 단어 제거
 
function solution17(arr:string[]):string[] {
  return arr.filter((str, i) => arr.indexOf(str)===i)
}
console.log(solution17(['good','time','good', 'time', 'student']));