map 을 두개 만들기
233
작성한 질문수 28
제가 강의 듣기전에 미리 풀어봤는데
선생님 코드와 다르게 저의 경우
function solution(str1, str2) {
let answer = "YES",
m1 = new Map(),
m2 = new Map();
for (let i = 0; i < str1.length; i++) {
m1.has(str1[i]) ? m1.set(str1[i], m1.get(str1[i]) + 1) : m1.set(str1[i], 1);
m2.has(str2[i]) ? m2.set(str2[i], m2.get(str2[i]) + 1) : m2.set(str2[i], 1);
}
for (let [key, value] of m1) {
if (!m2.has(key)) return "NO";
if (m2.get(key) !== value) return "NO";
}
return answer;
}str1 , str2 각각 map으로 만든뒤 for문 돌려서 비교했는데 이렇게 풀면 메모리 낭비가 심한 풀이일까요 ?
근데 그다음 영상 '모든 아나그램 찾기' 문제에션 두 문자를 map으로 변형한뒤 비교한 것 같은데, 어떤 상황일 때 어떤 풀이 방법을 선택해야하는지 알수있을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
00님, 다른 방법으로 문제를 접근하신 것은 매우 좋은 시도입니다.
두 개의 Map을 사용하는 방법은 입력 문자열의 길이에 비례하는 공간을 필요로 합니다. 각 문자에 대한 빈도수를 저장하기 때문에, 메모리 사용량은 입력 문자열의 크기와 연관이 있죠. 대부분의 경우 이 정도 메모리 사용은 큰 문제가 되지 않으나, 입력 데이터의 크기가 매우 클 경우에는 한 번 생각해볼 필요가 있습니다.
선택한 풀이 방법은 문제의 요구 사항과 제약 조건, 그리고 풀이의 목적에 따라 달라질 수 있습니다. 예를 들어, 실행 시간이 중요한 상황에서는 더 효율적인 시간 복잡도를 가진 풀이를 선택할 필요가 있습니다. 반면, 코드의 가독성이나 유지보수성을 더 중요시하는 상황이라면, 약간 비효율적이더라도 이해하기 쉬운 코드를 선택할 수 있습니다.
‘모든 아나그램 찾기’ 문제에서 map을 사용한 것은 두 문자열이 서로 아나그램인지를 효과적으로 비교하기 위해서입니다. 아나그램 비교는 각 문자의 빈도수가 일치하는지를 확인하는 것이고, 이를 위해 map을 사용하는 것은 자연스러운 접근법이에요.
다시 말해, 어떤 풀이 방법을 선택할지는 그 문제가 어떤 종류의 작업을 요구하는지, 데이터의 크기가 어느 정도인지, 그리고 어떤 부분을 최적화하고 싶은지(시간, 공간, 가독성 등)에 따라 결정됩니다.
코드가 메모리를 낭비한다고 느낄 땐, 같은 작업을 수행하되 더 적은 스토리지를 사용하는 방법을 찾아보는 것도 좋습니다. 예를 들어, 하나의 map만 사용하고 문자열을 정렬하여 비교하는 방법 등이 있겠죠. 하지만 항상 ‘최적’은 상황에 따라 다르므로, 문제의 유형과 요구 사항에 따라 적절한 접근 방식을 선택하시는 것이 중요합니다.
continue를 사용하는 이유
0
79
2
정렬 가능 여부 판단하기
0
64
2
알고리즘 학습법 관련해서 질문드립니다.
0
86
1
코드 리뷰 부탁드립니다!
0
90
1
indexOf를 사용해서 풀어보았습니다 !!
0
68
1
저는 이런식으로 구현 해보았습니다 !!
0
64
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
100
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
63
1
영상 보기 전에 직접 풀어봤습니다.
0
74
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
135
2
정규표현식으로 처리해도 상관없나요 ?
0
120
2
3칸씩 건너뛸 수 있을 경우
0
125
2
강의에 대해 질문있습니다.
0
135
2
Object와 Set을 이용해 풀어봤습니다.
0
117
2
이렇게 해도 되나요?
0
102
2
선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.
0
145
2
이렇게 풀어도 괜찮을까요?
0
138
1
이렇게 풀어도 괜찮을까요?
0
112
1
모든 아나그램 찾기에서 시간복잡도
0
98
1
코드리뷰 부탁드립니다.
0
130
1
for loop 탈출은 return 문으로 해도 되지 않나요?
0
133
1
투포인트알고리즘으로 풀어봤습니다.
0
142
0
코드 리뷰 부탁드립니다.
0
120
1
코드 맞게 작성한 거 아닌가여??
0
146
1





