알고리즘(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']));