반응형
1. 문제
- 문자열 word1, word2가 주어질 때 아래 연산을 거쳐 다른 문자열과 동일하게 만들 수 있는 지 여부를 반환하라.
- 연산1: 문자열 내 존재하는 다른 문자와 바꿀 수 있다.
- 연산2: 연속되는 문자열을 다른 문자와 바꿀 수 있다.
2. 해결
function closeStrings(word1: string, word2: string): boolean {
const map1 = new Map(), map2 = new Map();
for(const char of word1) {
map1.set(char, (map1.get(char) || 0) + 1)
}
for(const char of word2) {
map2.set(char, (map2.get(char) || 0) + 1)
}
const keys1 = [...map1.keys()].sort().join('');
const keys2 = [...map2.keys()].sort().join('');
if(keys1 !== keys2) return false;
const values1 = [...map1.values()].sort();
const values2 = [...map2.values()].sort();
for(let i =0; i< values1.length;i++) {
if(values1[i] !== values2[i]) return false;
}
return true;
};
- 두 문자열을 구성하는 문자의 종류와 숫자 분포가 다르면 false, 그 외는 true.