lt, rt 사용하지 않아도 괜찮을까요?
176
작성한 질문수 17
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이런식으로 해도 괜찮을까요?function handleCheck(sH, tH) {
for (const [key, value] of tH) {
//sH에 tH에 있는 값이 없으면 false return
if (!sH.has(key)) return false
//값이 같지 않으면 false return
if (value !== sH.get(key)) return false
}
return true
}
function solution(s, t) {
let answer = 0;
let tH = new Map();
let sH = new Map();
//t
for (const x of t) {
if (tH.has(x)) tH.set(x, tH.get(x) + 1);
else tH.set(x, 1)
}
//s 윈도우 생성
for (let i = 0; i < t.length - 1; i++) {
if (sH.has(s[i])) sH.set(s[i], sH.get(s[i]) + 1);
else sH.set(s[i], 1)
}
for (let i = sH.size; i < s.length; i++) {
//윈도우에 추가
if (sH.has(s[i])) sH.set(s[i], sH.get(s[i]) + 1);
else sH.set(s[i], 1)
//비교, sH랑 tH 사이즈 체크
if (sH.size === tH.size) {
//비교, sH랑 tH 값이 맞는지 체크 > 맞으면 카운트+
if (handleCheck(sH, tH)) answer++
}
//sH 앞에 값 빼기
//sH 맨 앞 = s에서 현재 index+1 - tH사이즈
let idx = i + 1 - tH.size;
//앞에 값 빼기
sH.set(s[idx], sH.get(s[idx]) - 1)
//뺀 값이 0이면 삭제
sH.get(s[idx]) === 0 && sH.delete(s[idx])
console.log('----------------------')
}
return answer;
}
let a = "bacaAacba";
let b = "abc";
console.log(solution(a, b));
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. wodms4525님, 질문하신 내용과 관련하여 답변드리겠습니다.
이 코드는 슬라이딩 윈도우(Sliding Window) 기법을 사용하여 특정 문자열 s에서 문자열 t의 모든 아나그램을 찾는 알고리즘입니다. lt, rt와 같은 변수를 사용하지 않아도 슬라이딩 윈도우의 주 목적인 문자열 내의 특정 범위를 조정하며 탐색하는 것을 잘 수행하고 있습니다.
단, for 문에서 사용된 i = sH.size; i < s.length; i++ 조건 부분은 윈도우의 크기를 t 문자열의 길이만큼 증가시키며 문제를 해결하기 위한 의도로 보입니다. 비교 함수인 handleCheck(sH, tH)를 통해 두 맵 sH와 tH의 각 키와 값을 비교하고 조건이 충족될 때 answer를 증가시키는 로직이므로, lt, rt를 별도로 사용하지 않더라도 이러한 접근 방식으로 문제를 해결하는 것은 타당합니다.
고로 코드 작성 방식에 정답은 없으며, 제시해주신 방식으로도 충분히 문제를 해결할 수 있습니다. 결국 중요한 것은 알고리즘이 정확하게 동작하여 올바른 결과를 반환하는지입니다. 코드를 실행하여 기대하는 결과가 나오는지 테스트해 보시고, 문제의 조건에 맞게 정답을 잘 찾아내는지 확인해 보시기 바랍니다.
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





