Unique In Order
2020-08-26
Unique In Order
-
이해
- 전에 있는 글자와 동일하면 안된다.
-
계획
- 스택을 이용해서 풀자
-
실행
describe('Unique In Order', () => { it('최종', () => { expect(uniqueInOrder('AAAABBBCCDAABBB')).toEqual(['A', 'B', 'C', 'D', 'A', 'B']) expect(uniqueInOrder('ABBCcAD')).toEqual(['A', 'B', 'C', 'c', 'A', 'D']) expect(uniqueInOrder([1,2,2,3,3])).toEqual([1,2,3]) }); }); const uniqueInOrder = function(input){ if(!(input instanceof Array)){ input = input.split(''); } return input.reduce((acc, cur) => { if(acc.length === 0 || acc[acc.length - 1] !== cur){ acc.push(cur) } return acc }, []) }
-
반성
- push()의 리턴값은 추가 된 length를 반환된다... 이것 때문에 시간이 오래걸렸다.
- 다른사람의 답안을 봤는데 간단히 for문으로 해결했다. falsy를 이용했다. 부럽다...
function uniqueInOrder1(it) { var result = [] var last for (var i = 0; i < it.length; i++) { if (it[i] !== last) { result.push(last = it[i]) } } return result } var uniqueInOrder=function(iterable){ return [...iterable].filter((a, i) => a !== iterable[i-1]) }