Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- sql like연산자
- 중복문자제거
- 시퀄 문법
- lastIndexOf()
- 중복된 단어
- 제로베이스
- ...점점점문법
- 중복 문자열
- indexOf()
- 프론트엔드 스쿨
- ubuntu타임존
- 스프링 데이타 JPA
- 중복단어제거
- 깃 토큰 만료
- 문자열순서바꾸기
- 레디스 확인
- 객체를 배열로
- 재귀스왑
- 배엘에서 스왑
- sql 문자열 패턴 검색
- 코딩 어?
- 객체의 밸류값만 찾기
- 5.3.8 Modifying Queries
- @Moditying @Query
- js 문자열을 문자배열로
- 단어 제거
- 배열을 객체로
- 문자열 중복
- 객체의키값만 찾기
- 우분투 시간 변경
Archives
- Today
- Total
코딩기록
set) 중복된 문자 제거 / [...new Set(매개변수)].join(''); set으로 중복 제거 / 중복 단어 제거 본문
프론트/JS)코딩테스트
set) 중복된 문자 제거 / [...new Set(매개변수)].join(''); set으로 중복 제거 / 중복 단어 제거
뽀짝코딩 2024. 9. 25. 21:45728x90
set
Array와 Set 복잡도 비교
기능 | 배열 (Array) | Set (Set) |
삽입 (Insertion) | push() - O(1) (배열 끝에 삽입 시) splice() - O(n) (특정 위치에 삽입 시) |
add() - O(1)(위치 지정 불가) |
삭제 (Deletion) | pop() - O(1) (끝에서 삭제 시) splice() - O(n) (특정 위치에서 삭제 시) filter() - O(n) (특정 요소 삭제 시) |
delete() - O(1) |
검색 (Search) | indexOf() 또는 includes() - O(n) | has() - O(1) |
접근 (Access) | arr[index] - O(1) (인덱스를 통한 접근) | for...of 반복 필요 - O(n) (인덱스 없음) |
중복 허용 여부 | push() 또는 splice() - 허용 | add() - 허용하지 않음 |
크기 확인 | length - O(1) | size - O(1) |
순서 유지 여부 | 순서 유지 | 순서 유지 (삽입된 순서대로 반복) |
문제 설명
문자열 str이 매개변수로 주어집니다. str에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ str ≤ 110
- str은 대문자, 소문자, 공백으로 구성되어 있습니다.
- 대문자와 소문자를 구분합니다.
- 공백(" ")도 하나의 문자로 구분합니다.
- 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
입출력 예
str result
"people" | "peol" |
"We are the world" | "We arthwold" |
입출력 예 설명
입출력 예 #1
- "people"에서 중복된 문자 "p"와 "e"을 제거한 "peol"을 return합니다.
입출력 예 #2
- "We are the world"에서 중복된 문자 "e", " ", "r" 들을 제거한 "We arthwold"을 return합니다.
/**
* @param {string} str
* @return {string}
*/
const solution = str => {
// do something
};
console.log(solution('people')); // 'peol'
console.log(solution('We are the world')); // 'We arthwold'
풀이
중복을 허용하지 않는 Set 객체의 특성을 활용하여 배열에서 중복된 요소를 제거할 수 있음.
고로, set 생성자 함수를 이용하는 것만으로 중복된 문자를 제거할 수 있음.
const solution = str => [...new Set(str)].join('');
console.log(solution('people')); // 'peol'
console.log(solution('We are the world')); // 'We arthwold'
문법정리
전체 코드
function answer(arr) {
let new_arr = [];
// new Set(arr).forEach(str => new_arr.push(str));
// new_arr = arr.filter((str, i) => arr.indexOf(str) === i);
new_arr = Array.from(new Set(arr));
return new_arr;
}
let input = [
// TC: 1
["john", "alice", "alice"],
// TC: 2
["Hello", "hello", "HELLO", "hello"],
// TC: 3
["kiwi", "banana", "mango", "kiwi", "banana"],
];
for (let i = 0; i < input.length; i++) {
process.stdout.write(`#${i + 1} `);
console.log(answer(input[i]));
}
// 출력 값
// #1 ["john", "alice"]
// #2 ["Hello", "hello", "HELLO"]
// #3 ["kiwi", "banana", "mango"]
1. new Set 유일한 값만 남기기
new Set(arr).forEach(str => new_arr.push(str));
2. filter / indexOf - 같은 인덱스면 걸러내기
new_arr = arr.filter((str, i) => arr.indexOf(str) === i);
3. Array.from
유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 배열로 변환.
new_arr = Array.from(new Set(arr));
반응형
'프론트 > JS)코딩테스트' 카테고리의 다른 글
Comments