일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- TypeScript
- Data Structure
- java
- vscode
- 알고리즘
- 그레이들
- Algorithm
- 백준
- DP
- 프로그래머스
- DFS
- frontend
- 안드로이드
- network
- BFS
- CS
- git
- Database
- VIM
- 동적 계획법
- Python
- Javascript
- Redux
- 리트코드
- Graph
- react
- LeetCode
- 다이나믹 프로그래밍
- db
- Today
- Total
늘 겸손하게
LeetCode 1347 - Minimum Number of Steps to Make Two Strings Anagram ( JavaScript ) 본문
LeetCode 1347 - Minimum Number of Steps to Make Two Strings Anagram ( JavaScript )
besforyou999 2021. 11. 16. 20:57
안녕하세요 besforyou입니다
이번 글은 LeetCode 1347 - Minimum Number of Steps to Make Two Strings Anagram 풀이입니다
문제 해설
길이가 같은 두 개의 문자열 s 와 t 가 주어진다.
한 단계에서 t의 문자 한 개를 다른 문자로 바꿀 수 있다.
t 를 s의 anagram으로 바꾸는데 필요한 최소한의 단계를 출력하라.
( 한 문자열의 anagram이란같은 문자들로 이루어져있고, 문자들의 위치가 다르거나 같은 문자열을 말한다. )
예 : bba , bab 가 있을때 bab는 bba의 anagram이다.
문제 풀이
1. 문자열 s의 모든 문자에 대해 hash table에 저장한다.
2. 문자가 이미 hash table에 저장되었다면 value를 1 증가시키고
3. 문자가 저장된 적이 없다면 1을 저장한다.
4. 문자열 t의 모든 문자를 key로 사용해서 hash table을 참조한다.
5. hash table에 key에 대한 value가 있다면 value - 1 을 다시 저장
6. hash table에 Key에 대한 value가 없다면 문자를 바꾸어야한다는 뜻이므로 count 1 증가
7. count 출력
문자열 s = "LeetCode", t = "practice" 의 경우를 생각해보자.
[ '문자' : '개수' ] 방식으로 문자열 안의 문자와 그 문자의 개수를 표현한다면
s 에는 [ 'l' : 1 , 'e' : 3 , 't' : 1 , 'c' : 1, 'o' : 1 , 'd' : 1 ] 와 같은 문자가 있고
t 에는 [ 'p' : 1, 'r' : 1, 'a' : 1, 'c' : 2 , 't' : 1 , 'i' : 1, 'e' : 1 ] 와 같은 문자가 있다고 할 수 있다.
t의 문자를 바꾸어서 s를 만들어야한다면,
1. t에만 있는 문자의 개수와
2. s와 t에 둘 다 있지만 t에 더 많이 있는 문자가 있을때 t에 존재하는 해당 문자의 개수 - s에 존재하는 해당 문자의 개수
위 두 개수를 더한것이 정답이다.
코 드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
var minSteps = function(s, t) {
let hashMap = {};
for (let letter of s) {
if (hashMap[letter]) hashMap[letter]++;
else hashMap[letter] = 1;
}
let changes = 0;
for (let letter of t) {
if (hashMap[letter]) hashMap[letter]--;
else changes ++;
}
return changes;
};
|
cs |
결 과
'코딩 문제 > LeetCode' 카테고리의 다른 글
LeetCode 1704 - Determine if String Halves Are Alike ( Java ) (0) | 2021.11.19 |
---|---|
LeetCode 442 - Find All Duplicates in an Array ( JavaScript ) (0) | 2021.11.17 |
LeetCode 890 - Find and Replace Return ( JavaScript ) (0) | 2021.11.15 |
LeetCode 2032 - Two Out of Three ( JavaScript ) (0) | 2021.11.15 |
LeetCode 1207 - Unique Number of Occurrences ( JavaScript ) (0) | 2021.11.13 |