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
- react js
- 자바스크립트
- MUI
- primitive type
- Node js
- 자료구조
- kakao map api
- nodejs
- javascript
- CSS
- 알고리즘
- 유데미
- 코드스테이츠
- 버블정렬
- next/Image
- sort
- 코드스테이츠 메인프로젝트
- 백준
- 배열
- OSI 7계층
- 프론트엔드
- 백준 nodeJS
- 코딩테스트
- input class
- 이벤트 루프
- Native select
- 정규표현식
- 재귀함수
- 페이지네이션
- JavaScript Deep Dive
Archives
- Today
- Total
신입 개발자에서 시니어 개발자가 되기까지
Anagrams 본문
Anagrams 이란?
- 하나의 문자를 재배열해서 만들어진 새로운 단어. 재배열된 문자는 원래 문자의 모든 글자를 사용해야 한다.
문제
a. 두 문자열을 받아 character의 빈도수가 같은 지를 판단해서 boolean값을 반환하는 함수 만들기
§ 예시
문제를 풀면서 알게 된 점
a. string은 for in이 아니라 for of문을 사용해야 한다. for in 문을 사용하면 object의 key값으로 string의 index가 들어가게 됨. 내가 필요한 것은 string의 각 character 이므로 for of 문을 사용해야 한다.
코드
function validAnagram(str1, str2) {
if (str1.length !== str2.length) {
return false;
}
const obj1 = {};
const obj2 = {};
for (let str of str1) {
obj1[str] = (obj1[str] || 0) + 1;
}
//obj2는 만들 필요 없었음.
// for (let i = 0; i < str2.length; i++) {
// let letter = str2[i];
// obj1이 존재하지 않거나 값이 0이면 false를 반환하고, 아니면 1을 뺀다.
// if (!obj1[letter]) {
// return false;
// } else {
// obj1[letter] -= 1;
// }
// }
// 이렇게 str2과 obj1만을 이용해서 바로 답을 도출할 수 있음.
for (let key of str2) {
obj2[key] = (obj2[key] || 0) + 1;
}
for (let key in obj1) {
if (!(key in obj2)) {
return false;
}
if (obj2[key] !== obj1[key]) {
return false;
}
}
return true;
}
'javascript > [Udemy] algorithm & data structure' 카테고리의 다른 글
두 수의 빈도수가 같은 지 판단하기 (0) | 2022.09.12 |
---|---|
[다중포인터] 배열에서 고유의 값 카운트하기 (0) | 2022.09.12 |
[section5] 문제해결패턴 (1) | 2022.08.30 |
[section4]문제해결접근법 (0) | 2022.08.30 |
[section3] 배열과 객체의 성능 평가 (0) | 2022.08.28 |